经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python 利用pandas和matplotlib绘制柱状折线图
来源:cnblogs  作者:悬崖上的金鱼  时间:2023/11/10 10:07:25  对本文有异议

创建数据可视化图表:柱状图与折线图结合

在数据分析和展示中,经常需要将数据可视化呈现,以便更直观地理解数据背后的趋势和关联关系。本篇文章将介绍如何使用 Python 中的 Pandas 和 Matplotlib 库创建一个柱状图与折线图结合的数据可视化图表。

准备工作

首先,我们需要导入必要的库,并读取我们的数据源,这里使用了 Pandas 库来读取 Excel 文件,Matplotlib 则用于绘制图表。

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体
  4.  
  5. # 读取Excel文件
  6. df = pd.read_excel('新建 XLSX 工作表.xlsx', sheet_name='Sheet3')

数据处理与准备

在这一部分,我们会对数据进行处理,并准备好需要用到的数据。具体操作包括设置 x 轴的位置和准备子图等。

  1. # 设置x轴的位置
  2. x = df.index
  3. # 创建画布和子图
  4. fig, ax1 = plt.subplots()

绘制柱状图和折线图

接下来,我们将绘制柱状图和折线图,并添加相应的数据标签和图例。

  1. # 绘制柱状图
  2. ax1.bar(x, df['销售数量'], label='销售数量', color='skyblue', width=0.4)
  3. # 添加数据标签
  4. for i, v in enumerate(df['销售数量']):
  5. ax1.text(i, v + 3, str(v), ha='center', va='bottom', fontsize=8)
  6. # 绘制折线图
  7. ax1.plot(x, df['销售数量2'], color='lightgreen', marker='o', linestyle='-', linewidth=2)
  8. # 添加折线图数据标签
  9. for i, v in enumerate(df['销售数量2']):
  10. ax1.text(i, v + 3, str(v), ha='center', va='bottom', color='g', fontsize=8)

图表美化和展示

最后,我们对图表进行美化,包括添加标签、标题、图例以及设置坐标轴刻度标签字体大小等,并展示最终的图形。

  1. # 添加标签和标题
  2. ax1.set_xlabel('店铺名称', fontsize=10)
  3. ax1.set_ylabel('销售数量/销售数量2', fontsize=10)
  4. ax1.set_title('销售数量与销售数量2对比', fontsize=12)
  5. ax1.set_xticks(x)
  6. ax1.set_xticklabels(df['店铺名称'], rotation=0, ha='right')
  7. ax1.legend(['销售数量', '销售数量2'], loc='upper left')
  8. # 设置坐标轴刻度标签字体大小
  9. ax1.tick_params(axis='both', which='major', labelsize=8)
  10. # 增加网格线
  11. ax1.grid(axis='y', linestyle='--', alpha=0.7)
  12. # 显示图形
  13. plt.show()

通过以上步骤,我们成功创建了一个柱状图与折线图结合的数据可视化图表。

图表效果图展示

 完整代码:

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体
  4.  
  5. # 读取Excel文件
  6. df = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建文件夹\新建 XLSX 工作表.xlsx', sheet_name='Sheet3')
  7. # 设置x轴的位置
  8. x = df.index
  9. # 创建画布和子图
  10. fig, ax1 = plt.subplots()
  11. # 绘制柱状图
  12. ax1.bar(x, df['销售数量'], label='销售数量', color='skyblue', width=0.4)
  13. # 添加数据标签
  14. for i, v in enumerate(df['销售数量']):
  15. ax1.text(i, v + 3, str(v), ha='center', va='bottom', fontsize=8)
  16. # 绘制折线图
  17. ax1.plot(x, df['销售数量2'], color='lightgreen', marker='o', linestyle='-', linewidth=2)
  18. # 添加折线图数据标签
  19. for i, v in enumerate(df['销售数量2']):
  20. ax1.text(i, v + 3, str(v), ha='center', va='bottom', color='g', fontsize=8)
  21. # 添加标签和标题
  22. ax1.set_xlabel('店铺名称', fontsize=10)
  23. ax1.set_ylabel('销售数量/销售数量2', fontsize=10)
  24. ax1.set_title('销售数量与销售数量2对比', fontsize=12)
  25. ax1.set_xticks(x)
  26. ax1.set_xticklabels(df['店铺名称'], rotation=0, ha='right')
  27. ax1.legend(['销售数量', '销售数量2'], loc='upper left')
  28. # 设置坐标轴刻度标签字体大小
  29. ax1.tick_params(axis='both', which='major', labelsize=8)
  30. # 增加网格线
  31. ax1.grid(axis='y', linestyle='--', alpha=0.7)
  32. # 显示图形
  33. plt.show()

 

原文链接:https://www.cnblogs.com/lcl-cn/p/17822896.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号