除了plt直接绘图之外,还可以使用subplots直接绘制多个子图。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y =2*np.cos(x)**5 + 3*np.sin(x)**3
#定义画布和子图数量
fig,axes=plt.subplots(2,3,figsize=(10,6),facecolor='#ccddef')
#添加整个画布的标题
fig.suptitle('我是最大的标题',fontsize=20)
#利用text属性添加副标题
fig.text(0.45,0.9,'这是副标题')
#折线图
axes[0,0].plot(x,y)
#柱状图
axes[0,1].bar(x,y*y)
#直方图
axes[0,2].hist(y,bins=30)
#散点图
axes[1,0].scatter(x,y)
#条形图
axes[1,1].barh(x,y)
#饼图
axes[1,2].pie([1,2,3,4,5],labels=['A级','B级','C级','D级','E级'])
#axes[1,2].boxplot() 需要合适的数据,就不画了
#对子图进行详细设置
ax1=axes[0,0]
#设置子图的xy轴范围,子图标题,标签背景颜色等,也可单独使用ax1.set_xlim()进行设置。部分属性不能直接使用set设置
ax1.set(xlim=[-10,12],ylim=[-6,4],title='This is TU1',xlabel='xlabel',ylabel='ylabel',facecolor='#ffeedd')
#添加网格
ax1.grid(True)
#调整图表位置和间距
fig.subplots_adjust(left=0.2, bottom=0.1, right=0.8, top=0.8,hspace=0.5)
plt.show()
结果图
fig.subplots_adjust的几个参数的含义,可以以画板(比画布更底层)的左下角为原点,建立直角坐标系。
left=0.2表示整个画布左边离y轴距离为整个画板的20%,
rigtht=0.8表示整个画布右边离y轴距离为整个画板的80%,
bottom和top同理,
hspace和wspace表示子图之间的间距(距离大小貌似是子图的宽高的百分比)
(left=0.2, bottom=0.1, right=0.6, top=0.8,hspace=0.5)
如果是在ipython中,会有一些自动的优化,所以,设置的subplots_adjust等参数有可能不会被显示。
ipython的结果图
网友评论