

python绘图中的四个绘图技巧
source link: https://www.bobobk.com/469843.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在可视化数据时,通常需要在单个图形中绘制多个图形。 例如,如果您想从不同的角度可视化相同的变量(例如,数字变量的并排直方图和箱线图),则多个图形很有用。 在这篇文章中,我分享了绘制多个图形的 4 个简单但实用的技巧。
数据集📦
让我们导入包并更新图表的默认设置,为图表添加一点个人风格。 我们将在提示上使用 Seaborn 的内置数据集:
import seaborn as sns # v0.11.2
import matplotlib.pyplot as plt # v3.4.2
sns.set(style='darkgrid', context='talk', palette='rainbow')df = sns.load\_dataset('tips')
df.head()
📍 技巧1: plt.subplots()
绘制多个子图的一种简单方法是使用 plt.subplots()
。 这是绘制 2 个并排子图的示例语法:
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10,4))
sns.histplot(data=df, x='tip', ax=ax[0])
sns.boxplot(data=df, x='tip', ax=ax[1]);
在这里,我们在一个图中绘制了两个子图。 我们可以进一步自定义每个子图。 例如,我们可以像这样为每个子图添加标题:
fig, ax = plt.subplots(1, 2, figsize=(10,4))
sns.histplot(data=df, x='tip', ax=ax[0])
ax[0].set\_title("Histogram")
sns.boxplot(data=df, x='tip', ax=ax[1])
ax[1].set\_title("Boxplot");
在循环中将所有数值变量用同一组图表示:
numerical = df.select\_dtypes('number').columnsfor col in numerical:
fig, ax = plt.subplots(1, 2, figsize=(10,4))
sns.histplot(data=df, x=col, ax=ax[0])
sns.boxplot(data=df, x=col, ax=ax[1]);
📍 技巧2: plt.subplot()
另一种可视化多个图形的方法是使用 plt.subplot()
,末尾没有 s
)。 语法与之前略有不同:
plt.figure(figsize=(10,4))
ax1 = plt.subplot(1,2,1)
sns.histplot(data=df, x='tip', ax=ax1)
ax2 = plt.subplot(1,2,2)
sns.boxplot(data=df, x='tip', ax=ax2);
当您想为多个图绘制相同类型的图形并在单个图中查看所有图形,该方法特别有用:
plt.figure(figsize=(14,4))
for i, col in enumerate(numerical):
ax = plt.subplot(1, len(numerical), i+1)
sns.boxplot(data=df, x=col, ax=ax)
我们同样能定制子图形。例如加个title
plt.figure(figsize=(14,4))
for i, col in enumerate(numerical):
ax = plt.subplot(1, len(numerical), i+1)
sns.boxplot(data=df, x=col, ax=ax)
ax.set\_title(f"Boxplot of {col}")
通过下面的比较,我们能更好的理解它们的相似处与不同处
熟悉这两种方法很有用,因为它们可以在不同情况下派上用场。
📍 技巧3: plt.tight_layout()
在绘制多个图形时,经常会看到一些子图的标签在它们的相邻子图上重叠,如下所示:
categorical = df.select\_dtypes('category').columnsplt.figure(figsize=(8, 8))
for i, col in enumerate(categorical):
ax = plt.subplot(2, 2, i+1)
sns.countplot(data=df, x=col, ax=ax)
顶部两个图表的 x 轴上的变量名称被剪掉,右侧图的 y 轴标签与左侧子图重叠.使用plt.tight_layout很方便
plt.figure(figsize=(8, 8))
for i, col in enumerate(categorical):
ax = plt.subplot(2, 2, i+1)
sns.countplot(data=df, x=col, ax=ax)
plt.tight\_layout()
专业你个看起来更好了。
📍 技巧4: plt.suptitle()
真个图形添加标题
plt.figure(figsize=(8, 8))
for i, col in enumerate(categorical):
ax = plt.subplot(2, 2, i+1)
sns.countplot(data=df, x=col, ax=ax)
plt.suptitle('Category counts for all categorical variables')
plt.tight\_layout()
此外,您可以根据自己的喜好自定义各个图。 例如,您仍然可以为每个子图添加标题。
Recommend
-
153
在移动开发过程中,从UI图上获取颜色是日常开发中常有的事。不过从图片获取颜色也有很多种操作方式,很多人在日常中取到的并不是“正确”的值。 上策:避免从图片中取值 最好的情况就是不需要开发者从设计图上获取颜色。常见的方式有以下三种。 设计图上直接标注:sk...
-
106
今天早间,外媒报道在中国谷歌地图已经可以使用。这或将是谷歌重回中国的一个信号。不过事情似乎出现了变化。谷歌总部对此做出回应:“TherehavebeennochangestoGoogleMapsinChina.(Google地图在中国没有任何变化)”。
-
124
最近在做网页版图片处理相关的项目,也算是初入了 canvas 的坑。项目需求中有一个给图片添加水印的功能。我们知道,在浏览器端实现图片添加水印功能,通常的做法就是使用 canvas 的 drawImage 方法。对于普通的合成(比如一张底图和一张 PNG 水印
-
78
本文主要分享整理在unity里实现2D大地图中角色行走的一些知识点1.效果展示...
-
96
在我的布局default.ctp我有 <!--nocache--> <?php echo $this->Html->getCrumbs(' / ', 'Home'); ?> <!--/nocache--> 在我称之为rules.cpt的视图中 <!--n...
-
36
有问题,上知乎。知乎,可信赖的问答社区,以让每个人高效获得可信赖的解答为使命。知乎凭借认真、专业和友善的社区氛围,结构化、易获得的优质内容,基于问答的内容生产方式和独特的社区机制,吸引、聚集了各行各业中大量的亲历者、内行人、领域专家、领域爱好者...
-
17
在Neural network还未使用在graph里时, 图聚类就有着很大的需求, 比如在社交网络中的群体分类,如何在图中完成相应地工作,本文基于对cs224w 《Spectral Clustering》的学习笔记,尝试描述清楚,这方面经典的工作。 Gr...
-
5
leetcode 84. 柱状图中最大的矩形 ...
-
9
大家好,我是早起。 在使用 Python 进行数据可视化时,相信不论是什么工具,你都会发现有些操作/代码段会频繁的用到,这一点在matplotlib上尤为突出。 本文就向大家分享十个我常用的一些小技巧,大多一行...
-
6
经常能看到有关 CSS 绘图的文章,譬如使用纯 HTML + CSS 绘制一幅哆啦 A 梦图画。实现的方式就是通过堆叠 div,一步一步实现图画中的一块一块。这种技巧本身没有什么问题,但是就是少了一些难度,只需要有耐心,很多图形还是能够被慢慢实现出来的。 基于...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK