前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matplotlib 同时绘制多个图形(二)

matplotlib 同时绘制多个图形(二)

作者头像
用户6021899
发布2019-08-14 16:14:34
1.7K0
发布2019-08-14 16:14:34
举报

matplotlib中,使用subplot2grid()函数,可以让图形跨越固定的网格布局。通过设置该函数的rowspan 和 colspan 参数,可以让图形占据多个行和列。

代码语言:javascript
复制
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

matplotlib.rcParams["font.sans-serif"] = ["KaiTi"]
matplotlib.rcParams["axes.unicode_minus"] = False
X1 = np.linspace(0,20,1000)
Y1= np.e**(X1) * np.sin(X1)
X2 = np.random.randn(1000)+100

#网格共2行,3列,从(0,0)(注意,序数从0开始!)开始,跨越2列
plt.subplot2grid((2,3), (0,0),colspan =2)
plt.hist(X2, color ='red', edgecolor='black')
plt.xlabel("x 轴标签",color ="b")
plt.ylabel("y 轴标签",color ="b")
plt.title("标题2",color ="b")

#网格共2行,3列,从(0,2)开始,默认只占1列。
plt.subplot2grid((2,3), (0,2))
plt.boxplot([X2],labels=("G1",))
plt.ylabel("y 轴标签",color ="b")
plt.title("标题3",color ="b")

plt.subplot2grid((2,3), (1,0), colspan =3)
plt.plot(X1,Y1,"r-")
plt.xlabel("x 轴标签",color ="b")
plt.ylabel("y 轴标签",color ="b")
plt.title("标题1",color ="b")
plt.grid()

plt.suptitle("画布总标题")
plt.tight_layout()
plt.show()

也可以以matplotlib子模块gridspec中的类GridSpec作为add_subplot的参数,给画布分区。

代码语言:javascript
复制
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import numpy as np

matplotlib.rcParams["font.sans-serif"] = ["KaiTi"]
matplotlib.rcParams["axes.unicode_minus"] = False

X1 = np.linspace(0,20,1000)
Y1= np.e**(X1) * np.sin(X1)
X2 = np.random.randn(1000)+100

fig = plt.figure()#画布对象
gs = GridSpec(2,3)#2行3列

#第0行,跨越0到1列
ax1 = fig.add_subplot(gs[0, 0:2], facecolor="yellowgreen")
ax1.hist(X2, color ='red', edgecolor='black')
ax1.set_xlabel("x 轴标签",color ="b")
for ticklabel in ax1.get_xticklabels():
    ticklabel.set_rotation(60)#设置x轴刻度数字的旋转角度
ax1.set_ylabel("y 轴标签",color ="b")
ax1.set_title("标题2",color ="b")

#第0行,第2列(从0开始!!)
ax2 = fig.add_subplot(gs[0, 2], facecolor="yellowgreen")
ax2.boxplot([X2],labels=("G1",))
ax2.set_ylabel("y 轴标签",color ="b")#注意图形对象ax的方法名和pyplot比 多了 "set_" !!!!!
ax2.set_ylim(90,105)
ax2.set_yticks(np.arange(90,107.5,2.5))
ax2.set_title("标题3",color ="b")

#第1行,跨越所有列(从0开始!!)
ax3 = fig.add_subplot(gs[1,:])
ax3.plot(X1,Y1,"r-")
ax3.set_xlabel("x 轴标签",color ="b",bbox = {"facecolor":"lightgreen","pad":3,"alpha": 0.3})#显示方框,pad决定留白的大小
ax3.set_ylabel("y 轴标签",color ="b",bbox = {"facecolor":"yellow","pad":3,"alpha": 0.3})
ax3.set_title("标题1",color ="b",bbox = {"facecolor":"magenta","pad":5,"alpha": 0.4})
ax3.grid()

plt.suptitle("画布总标题")
plt.tight_layout()
plt.show()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档