前言
相信很多初学python可视化小伙伴会有这样的疑问,怎么画柱状图和折线图的组合图呢?自己会画柱状图、折线图,但是怎么画在一起呢?其实啊,这也不难,下面给大家演示一波。
目录
一、数据源(数据存放于xlsx文件中)
二、实现步鄹
1.读取数据
1.1代码
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('./乡镇文化站数与从业人数.xlsx', header=0, index_col=0)
print(data)
1.2打印结果(读取数据成功):
1.3提取数据
# 提取数据
x = data['年份']
y1 = data['乡镇文化站数']
y2 = data['乡镇文化站从业人员数']
2.由于不支持中文显示,所以需要设置中文显示乱码等问题
# 设置正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# 设置字体大小
plt.rcParams.update({'font.size': 16})
3.实现主体部分
def plot_combination():
plt.figure(figsize=(16, 8))
plt.subplot(111)
# 柱形宽度
bar_width = 0.35
# 在主坐标轴绘制柱形图
plt.bar(x, y1, bar_width,color='r', label='乡镇文化站数')
plt.ylim(31500,35000)
# 设置图例
plt.legend(loc='upper left')
plt.ylabel("单位:站",fontsize=20, loc="center")
# 设置横坐标的标签
plt.xticks(x)
#plt.set_xticklabels(sale.index)
plt.xlabel("年份",fontsize=20, loc="center")
# 在次坐标轴上绘制折线图
plt.twinx()
plt.plot(x, y2, ls='--', lw=2, color='c', marker='v',ms = 10, mfc = 'k', label='站从业人员数')
# 设置次坐标轴的取值范围,避免折线图波动过大
plt.ylim(0,120000)
# 设置图例
plt.legend(loc='upper right')
# 设置标题
plt.title('\n乡镇文化站数与站从业人员数的情况\n', fontsize=26, loc='center', color='k')
plt.ylabel("单位:人",fontsize=20, loc="center")
plt.savefig('./figure1.jpg', bbox_inches='tight')
plt.show()
if __name__ == '__main__':
plot_combination()
4.实现完整代码
#导入库
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('./乡镇文化站数与从业人数.xlsx', header=0, index_col=0)
print(data)
# 设置正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# 设置字体大小
plt.rcParams.update({'font.size': 16})
data = pd.read_excel('./乡镇文化站数与从业人数.xlsx', header=0, index_col=0)
# 提取数据
x = data['年份']
y1 = data['乡镇文化站数']
y2 = data['乡镇文化站从业人员数']
def plot_combination():
plt.figure(figsize=(16, 8))
plt.subplot(111)
# 柱形宽度
bar_width = 0.35
# 在主坐标轴绘制柱形图
plt.bar(x, y1, bar_width,color='r', label='乡镇文化站数')
plt.ylim(31500,35000)
# 设置图例
plt.legend(loc='upper left')
plt.ylabel("单位:站",fontsize=20, loc="center")
# 设置横坐标的标签
plt.xticks(x)
#plt.set_xticklabels(sale.index)
plt.xlabel("年份",fontsize=20, loc="center")
# 在次坐标轴上绘制折线图
plt.twinx()
plt.plot(x, y2, ls='--', lw=2, color='c', marker='v',ms = 10, mfc = 'k', label='站从业人员数')
# 设置次坐标轴的取值范围,避免折线图波动过大
plt.ylim(0,120000)
# 设置图例
plt.legend(loc='upper right')
# 设置标题
plt.title('\n乡镇文化站数与站从业人员数的情况\n', fontsize=26, loc='center', color='k')
plt.ylabel("单位:人",fontsize=20, loc="center")
plt.savefig('./figure1.jpg', bbox_inches='tight')
plt.show()
if __name__ == '__main__':
plot_combination()
三、结果显示如图
四、小结
滑倒这里,你有什么感想呢?你会不会有种想法,就是多个柱状图和折线图的组合图,也就是并列垂直柱状图和折线图的组合图。关于这个另一篇文章已经提到了,如果想要了解可以点击下面链接哦!
python实现并列垂直柱状图与折线图的组合图_青枫浦上看桃花的博客-CSDN博客