如何在Python中合并多个图形
简介
Matplotlib允许在同一图形中添加多个绘图。在本教程中,我将向您展示如何在两个不同的坐标轴上呈现数据。
如何操作
1. 通过打开Python命令提示符并发送pip install matplotlib来安装matplotlib。
import matplotlib.pyplot as plt
2. 准备要显示的数据。
import matplotlib.pyplot as plt
#数据的准备(我虚构了数据,没有这些数据的准确性)
mobile = ['Iphone','Galaxy','Pixel']
#手机单位的销售数据(单位:百万)四个季度的销售数据
units_sold = (('2016',12,8,6),
('2017',14,10,7),
('2018',16,12,8),
('2019',18,14,10),
('2020',20,16,5),)
3. 把数据分成每家公司各自的手机单位数组。
#数据的准备 - 分拆数据
Years, IPhone_Sales, Galaxy_Sales, Pixel_Sales = zip(*units_sold)
#设置位置
Position = list(range(len(units_sold)))
#设置宽度
Width = 0.2
4. 创建第一个子图。
plt.subplot(2, 1, 1)
<matplotlib.axes._subplots.AxesSubplot at 0x214185d4e50>

5. 创建包含关于IPhone_Sales信息的条形图。
Iphone = plt.bar(Position, IPhone_Sales,color='green')
plt.ylabel('IPhone 销量')
plt.xticks(Position, Years)
([<matplotlib.axis.XTick at 0x214186115e0>,
<matplotlib.axis.XTick at 0x21418611580>,
<matplotlib.axis.XTick at 0x2141861fc40>,
<matplotlib.axis.XTick at 0x21418654e20>,
<matplotlib.axis.XTick at 0x2141865f370>],
[Text(0, 0, '2016'),
Text(0, 0, '2017'),
Text(0, 0, '2018'),
Text(0, 0, '2019'),
Text(0, 0, '2020')])

6. 现在创建另一个y轴,添加有关三星Galaxy销售的信息。
plt.twinx()
Galaxy = plt.plot(Position, Galaxy_Sales, 'o-', color='blue')
plt.ylabel('Galaxy 销量')
plt.xticks(Position, Years)
([<matplotlib.axis.XTick at 0x214186b4c40>,
<matplotlib.axis.XTick at 0x214186b4c10>,
<matplotlib.axis.XTick at 0x21418682ac0>,
<matplotlib.axis.XTick at 0x214186dd8e0>,
<matplotlib.axis.XTick at 0x214186dddf0>],
[Text(0, 0, '2016'),
Text(0, 0, '2017'),
Text(0, 0, '2018'),
Text(0, 0, '2019'),
Text(0, 0, '2020')])

7. 我们现在要绘制最终的Google Pixel销售数据。
plt.subplot(2, 1, 2)
plt.plot(Position, Pixel_Sales, color='yellow')
plt.gca().set_ylim(ymin=0)
plt.xticks(Position, Years)
([<matplotlib.axis.XTick at 0x2141870f9a0>,
<matplotlib.axis.XTick at 0x2141870f580>,
<matplotlib.axis.XTick at 0x2141870a730>,
<matplotlib.axis.XTick at 0x2141873c9d0>,
<matplotlib.axis.XTick at 0x2141873cee0>],
[Text(0, 0, '2016'),
Text(0, 0, '2017'),
Text(0, 0, '2018'),
Text(0, 0, '2019'),
Text(0, 0, '2020')])

plt.show()
例子
8.将所有内容组合在一起并保存图表。
import matplotlib.pyplot as plt
# 数据准备(假定的数据,统计数据的精度不高)
mobile = ['Iphone','Galaxy','Pixel']
# 每个手机型号的四个季度销售量数据(单位:百万)
units_sold = (('2016',12,8,6),
('2017',14,10,7),
('2018',16,12,8),
('2019',18,14,10),
('2020',20,16,5),)
# 数据准备 - 拆分数据
Years, IPhone_Sales, Galaxy_Sales, Pixel_Sales = zip(*units_sold)
# 设置位置
Position = list(range(len(units_sold)))
# 设置宽度
Width = 0.2
plt.subplot(2, 1, 1)
Iphone = plt.bar(Position, IPhone_Sales, color='green')
plt.ylabel('Iphone 销售量')
plt.xticks(Position, Years)
plt.twinx()
Galaxy = plt.plot(Position, Galaxy_Sales, 'o-', color='blue')
plt.ylabel('Galaxy 销售量')
plt.xticks(Position, Years)
plt.subplot(2, 1, 2)
plt.plot(Position, Pixel_Sales, color='yellow')
plt.ylabel('Pixel 销售量')
plt.gca().set_ylim(ymin=0)
plt.xticks(Position, Years)
# plt.show()
plt.savefig('CombiningGraphs.png', dpi=72)

极客教程