包含循环subplots换subplot的词条
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列,图形绘制在第一个子图上。