当前位置:   article > 正文

python matplotlib在一张画布上画多个图的两种方法,plt.subplot(),plt.subplots()。_python plt画多张图

python plt画多张图

Matplotlib在一张画布上画多个图的两种方法,plt.subplot,plt.subplots。

回顾

之前也用过plt.subplots()在一张图上画过多个图,今天看到用plt.subplot()的画法想着也来实现下,同时也发现了两者之间的优缺点,感觉subplot()更便捷一点。其实两者都是别人写好的库函数,只要理解好库函数的传递参数的参数,合理的将自己传入的参数整理,两者都容易上手的。
这里我用的是jupyter notebook 画的,工具挺多的。

plt.subplots()画法

import matplotlib.pyplot as plt
import numpy as np

#数据
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]

#plt.subplots()是一个函数,返回一个包含figure和axes数组对象的元组
figure ,axes =plt.subplots(2,2,figsize=(18,12),dpi=100)
# 设置显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体 
plt.rcParams['axes.unicode_minus']=False     # 正常显示负号

ax = axes.flatten() #子图展平,将ax由n*m的Axes组展平成1*nm的Axes组(二维变一维)

# 绘制直方图
# data:必选参数,绘图数据
# bins:直方图的长条形数目,可选项,默认为10
# facecolor:长条形的颜色
# edgecolor:长条形边框的颜色
data = np.random.randn(1000)# 随机生成(1000)服从正态分布的数据
axes[0][0].hist(data,bins=30,facecolor='blue',edgecolor='red')
axes[0][0].set_xlabel("区间")# 显示横轴标签
axes[0][0].set_ylabel("频数/频率")# 显示纵轴标签
axes[0][0].set_title("hist")

# 绘制条形图
axes[0][1].bar(attr,v1,width=0.4, alpha=0.8, color='red', label="v1")
# axes[0][1].bar(attr,v2,width=0.3, alpha=0.8, color='green', label="v2")
axes[0][1].set_title("bar")
axes[0][1].set_xlabel("类别")# 显示横轴标签
axes[0][1].set_ylabel("销量")# 显示纵轴标签
axes[0][1].legend()

# 绘制条形图
ax[2].bar(attr,v2,width=0.4, alpha=0.8, color='green', label="v1")
# axes[0][1].bar(attr,v2,width=0.3, alpha=0.8, color='green', label="v2")
ax[2].set_title("bar1")
ax[2].set_xlabel("类别")# 显示横轴标签
ax[2].set_ylabel("销量")# 显示纵轴标签
ax[2].legend()

# 绘制饼图
sum =0
for data in v2:
    sum+=data
d =[]
for data in v2:
    d.append(data/sum)
explode = [0.06,0,0,0,0.05,0]
ax[3].pie(x=d,labels=attr,autopct = '%3.2f%%', colors=('b', 'g', 'r', 'c', 'm', 'y'),explode=explode)
ax[3].set_title("pie")
ax[3].axis('equal')
ax[3].legend()
# x   (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化
# labels   (每一块)饼图外侧显示的说明文字
# explode (每一块)离开中心距离
# startangle   起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
# shadow   是否阴影
# labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
# autopct 控制饼图内百分比设置,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
# pctdistance 类似于labeldistance,指定autopct的位置刻度
# radius   控制饼图半径 

plt.savefig("D:\\StudyDemo\\IDEA\\PythonDemo\\MatplotlibPaint\\SaveData\\subplots.png")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

图subplots
在这里插入图片描述

plt.subplot()画法

import matplotlib.pyplot as plt
import numpy as np

#数据
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]

# 设置显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体 
plt.rcParams['axes.unicode_minus']=False     # 正常显示负号

#设置画布大小像素点
plt.figure(figsize=(14,14),dpi=100)

# 绘制直方图
plt.subplot(2,2,1)
data = np.random.randn(1000)# 随机生成(1000)服从正态分布的数据
plt.hist(data,bins=40,facecolor='blue',edgecolor='red')
plt.ylabel("频率/区间")
plt.xlabel("区间")
plt.title("直方图")

# 绘制条形图
plt.subplot(2,2,2)
plt.bar(attr,v1,width=0.4, alpha=0.8, color='red', label="v1")
plt.legend()
plt.ylabel("销量")
plt.xlabel("种类")
plt.title("条形图")

# 绘制条形图
plt.subplot(2,2,3)
plt.bar(attr,v2,width=0.4, alpha=0.8, color='black', label="v2")
plt.legend()
plt.ylabel("销量")
plt.xlabel("种类")
plt.title("条形图")

# 绘制条形图
plt.subplot(2,2,4)
sum =0
for data in v2:
    sum+=data
d =[]
for data in v2:
    d.append(data/sum)
explode = [0.06,0,0,0,0.05,0]
plt.pie(x=d,explode=explode,labels=attr,autopct = '%3.2f%%', colors=('b', 'g', 'r', 'c', 'm', 'y'))
plt.legend()
plt.title("饼图")

plt.savefig("D:\\StudyDemo\\IDEA\\PythonDemo\\MatplotlibPaint\\SaveData\\subplot.png")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

图subplot
在这里插入图片描述

保存

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/612732
推荐阅读
相关标签
  

闽ICP备14008679号