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

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

准备工作

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

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3.  
  4. plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体
  5.  
  6. # 读取Excel文件
  7. 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. # 添加数据标签
  5. for i, v in enumerate(df['销售数量']):
  6. ax1.text(i, v + 3, str(v), ha='center', va='bottom', fontsize=8)
  7.  
  8. # 绘制折线图
  9. ax1.plot(x, df['销售数量2'], color='lightgreen', marker='o', linestyle='-', linewidth=2)
  10.  
  11. # 添加折线图数据标签
  12. for i, v in enumerate(df['销售数量2']):
  13. 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. # 设置坐标轴刻度标签字体大小
  10. ax1.tick_params(axis='both', which='major', labelsize=8)
  11.  
  12. # 增加网格线
  13. ax1.grid(axis='y', linestyle='--', alpha=0.7)
  14.  
  15. # 显示图形
  16. plt.show()

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

图表效果图展示

完整代码:

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

Python 利用pandas和matplotlib绘制柱状折线图的更多相关文章

  1. 用Python的Pandas和Matplotlib绘制股票KDJ指标线

    我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...

  2. 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线

    我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...

  3. ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图

    作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...

  4. Pandas:DataFrame绘制并保存折线图时不打开图形只保存文件

    保存图形,用的是plt.savefig函数,只需要在保存图形之后,调用plt.close()关闭画布,就不会显示出来了: data.plot() outfile='image.png' plt.sav ...

  5. 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图

    利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import  pandas  as pdimport  matplotlib. ...

  6. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  7. ECharts图表之柱状折线混合图

    Echarts 官网主页  http://echarts.baidu.com/index.html Echarts 更多项目案例  http://echarts.baidu.com/echarts2/ ...

  8. Matplotlib基本图形之折线图

    Matplotlib基本图形之折线图折线图特点 折线图是用折线将各数据连起来组成的图形常用来观察数据随时间变化的趋势例如:股票价格,温度变化,等等 示例代码: import os import tim ...

  9. 【学习总结】GirlsInAI ML-diary day-21-初识 Numpy, Matplotlib, Seanborn [柱状图、折线图、箱图]

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day21 初识 Numpy, Matplotlib, Seanborn [柱状图.折线图.箱图] 一.Titanic练习赛 ...

  10. python中matplotlib绘图封装类之折线图、条状图、圆饼图

    DrawHelper.py封装类源码: import matplotlib import matplotlib.pyplot as plt import numpy as np class DrawH ...

随机推荐

  1. python教程 入门学习笔记 第2天 第一个python程序 代码规范 用默认的IDLE (Python GUI)编辑器编写

    四.第一个python程序 1.用默认的IDLE (Python GUI)编辑器编写 2.在新建文件中写代码,在初始窗口中编译运行 3.写完后保存为以.py扩展名的文件 4.按F5键执行,在初始窗口观 ...

  2. Docker本地搭建个人企业私有云盘seafile搭建(完美解决ONLYOFFICE无法预览的情况)

    seafile搭建 #创建存放路径 mkdir -p /media/megrez/data/seafile/seafile-mysql/db mkdir -p /media/megrez/data/s ...

  3. 一 APPIUM基本理论知识(转)

    1.APPIUM介绍 Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用.所谓的"移动原生应用"是指那些用 iO ...

  4. 为react项目添加开发/提交规范(前端工程化、eslint、prettier、husky、commitlint、stylelint)

    因历史遗留原因,接手的项目没有代码提醒/格式化,包括 eslint.pretttier,也没有 commit 提交校验,如 husky.commitlint.stylelint,与其期待自己或者同事的 ...

  5. cdn 引入的资源需要通过 externals 排除打包哦~

    cdn 指的是通过相互连接的网络系统,使用最靠近用户的服务器将音乐.图片等资源以高效率和低成本的方式将内容传递给用户. 在 webpack 中,我们可能会将引入的第三方资源会编译成单独的文件,作为静态 ...

  6. vscode c++食用指南

    准备 配置环境为机房的 win10. 首先你需要下载 vscode. 可以从官网下载:https://code.visualstudio.com/Download 配置编译c++ 下载完之后安装好,界 ...

  7. Day11:KMP、字典树、AC自动机、后缀数组、manacher

    KMP算法 前言 KMP算法是一个著名的字符串匹配算法,效率很高,但是确实有点复杂. 简介 KMP 算法是 D.E.Knuth.J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 ...

  8. 论文解读(AdSPT)《Adversarial Soft Prompt Tuning for Cross-Domain Sentiment Analysis》

    Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:Adversarial Soft Prompt Tuning for Cross-Domain Senti ...

  9. Web服务器部署上线的踩坑流程回顾与知新

    5月份时曾部署上线了C++的Web服务器,温故而知新,本篇文章梳理总结一下部署流程知识: 最初的解决方案:https://blog.csdn.net/BinBinCome/article/detail ...

  10. Solution -「洛谷 P6156」简单题

    Description Link. 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n(i+j)^kf(\gcd(i,j))\gcd(i,j)\). Solution ...