包含循环subplots换subplot的词条

http://www.itjxue.com  2023-01-22 00:08  来源:未知  点击次数: 

Matplotlib的子图subplot的使用

Matplotlib的可以把很多张图画到一个显示界面,这就设计到面板切分成一个一个子图。这是怎么做到的呢。matplot提供两种方法。

直接指定划分方式和位置进行绘图。

subplot前面俩参数指定的是一个画板被分割成的行和列,后面一个参数则指的是当前 正在绘制的编号!

那是个什么编号规则呢?就是 行优先数数规则!

这个方法更直接。事先先把画板分隔好。

这里的的ax是matplotlib.axes._subplots.AxesSubplot 这个类型的,我们可以理解为这是一个子plot,我们在这上面操作它把图像画到figure上面去。我们直接根据列表的下标指定画图的位置。最后显示figure即可。

python绘图中四个绘图技巧

pre{overflow-x: auto}

技巧1: plt.subplots()

技巧2: plt.subplot()

技巧3: plt.tight_layout()

技巧4: plt.suptitle()

数据集:

让我们导入包并更新图表的默认设置,为图表添加一点个人风格。 我们将在提示上使用 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()

此外,您可以根据自己的喜好自定义各个图。 例如,您仍然可以为每个子图添加标题。

到此这篇关于python绘图 四个绘图技巧的文章就介绍到这了,希望大家以后多多支持!

如何用matlab中subplot的使用

1、例如 subplot(2,2,1),表示一个2行2列的画布上,用第一行第一列画图。

2、例如:复制一下程序到matlab窗口

figure

t=0:0.001:1;

y1=sin(10*t);

y2=sin(15*t);

y3=sin(20*t);

y4=sin(25*t);

subplot(2,2,1)

plot(t,y1,'--r*','linewidth',2,'markersize',5)

text(.5,.5,{'subplot(2,2,1)'},...

? 'FontSize',14,'HorizontalAlignment','center')

subplot(2,2,2)

plot(t,y2,'--b*','linewidth',2,'markersize',5)

text(.5,.5,{'subplot(2,2,2)'},...

? 'FontSize',14,'HorizontalAlignment','center')

subplot(2,2,3)

plot(t,y2,'--b*','linewidth',2,'markersize',5)

text(.5,.5,{'subplot(2,2,3)'},...

? 'FontSize',14,'HorizontalAlignment','center')

subplot(2,2,4)

plot(t,y2,'--r*','linewidth',2,'markersize',5)

text(.5,.5,{'subplot(2,2,4)'},...

? 'FontSize',14,'HorizontalAlignment','center')

3、然后程序编译结果如右图所示。

如何将matlab中每个循环生成的图画在subplot不同的子图里

不清楚你什么意思,

如果是想在多个窗口中显示子图就用figure命令;

你可以在每画一个子图前加一个figure;这样再画出的图形就会在新的窗口中出现了,否则后一图形会将图形窗口中的上一子图覆盖;

如果是想在同一窗口中显示多个子图的话,可以使用subplot(a,b,c)函数

在画每个子图前加一个上述命令,其中a表示子图的总行数,b表示子图的总列数,c表示子图的个数序号,具体可参见MATLAB的帮助信息;如:help subplot

plt.subplots()的使用

plt.subplots() 是一个函数,返回一个包含figure和axes对象的元组。因此,使用 fig,ax = plt.subplots() 将元组分解为fig和ax两个变量。

下面两种表达方式具有同样的效果,可以看出 fig.ax = plt.subplots() 较为简洁。

通常,我们只用到ax.

把父图分成2*2个子图, ax.flatten() 把子图展开赋值给axes,axes[0]便是第一个子图,axes[1]是第二个... ...

如果,你想改变图形的属性或想把图形保存为.npg文件,那么fig是非常有用的。

fig.add_subplot(121) 和 fig.add_subplot(1,2,1) 是可互换的。表示把父图分成1行2列,图形绘制在第一个子图上。

(责任编辑:IT教学网)

更多

推荐网页文字特效文章