Python 利用pandas和matplotlib绘制柱状折线图
创建数据可视化图表:柱状图与折线图结合
在数据分析和展示中,经常需要将数据可视化呈现,以便更直观地理解数据背后的趋势和关联关系。本篇文章将介绍如何使用 Python 中的 Pandas 和 Matplotlib 库创建一个柱状图与折线图结合的数据可视化图表。
准备工作
首先,我们需要导入必要的库,并读取我们的数据源,这里使用了 Pandas 库来读取 Excel 文件,Matplotlib 则用于绘制图表。
import pandas as pd
import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体 # 读取Excel文件
df = pd.read_excel('新建 XLSX 工作表.xlsx', sheet_name='Sheet3')
数据处理与准备
在这一部分,我们会对数据进行处理,并准备好需要用到的数据。具体操作包括设置 x 轴的位置和准备子图等。
# 设置x轴的位置
x = df.index
# 创建画布和子图
fig, ax1 = plt.subplots()
绘制柱状图和折线图
接下来,我们将绘制柱状图和折线图,并添加相应的数据标签和图例。
# 绘制柱状图
ax1.bar(x, df['销售数量'], label='销售数量', color='skyblue', width=0.4) # 添加数据标签
for i, v in enumerate(df['销售数量']):
ax1.text(i, v + 3, str(v), ha='center', va='bottom', fontsize=8) # 绘制折线图
ax1.plot(x, df['销售数量2'], color='lightgreen', marker='o', linestyle='-', linewidth=2) # 添加折线图数据标签
for i, v in enumerate(df['销售数量2']):
ax1.text(i, v + 3, str(v), ha='center', va='bottom', color='g', fontsize=8)
图表美化和展示
最后,我们对图表进行美化,包括添加标签、标题、图例以及设置坐标轴刻度标签字体大小等,并展示最终的图形。
# 添加标签和标题
ax1.set_xlabel('店铺名称', fontsize=10)
ax1.set_ylabel('销售数量/销售数量2', fontsize=10)
ax1.set_title('销售数量与销售数量2对比', fontsize=12)
ax1.set_xticks(x)
ax1.set_xticklabels(df['店铺名称'], rotation=0, ha='right')
ax1.legend(['销售数量', '销售数量2'], loc='upper left') # 设置坐标轴刻度标签字体大小
ax1.tick_params(axis='both', which='major', labelsize=8) # 增加网格线
ax1.grid(axis='y', linestyle='--', alpha=0.7) # 显示图形
plt.show()
通过以上步骤,我们成功创建了一个柱状图与折线图结合的数据可视化图表。
图表效果图展示

完整代码:
import pandas as pd
import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体 # 读取Excel文件
df = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建文件夹\新建 XLSX 工作表.xlsx', sheet_name='Sheet3') # 设置x轴的位置
x = df.index # 创建画布和子图
fig, ax1 = plt.subplots() # 绘制柱状图
ax1.bar(x, df['销售数量'], label='销售数量', color='skyblue', width=0.4) # 添加数据标签
for i, v in enumerate(df['销售数量']):
ax1.text(i, v + 3, str(v), ha='center', va='bottom', fontsize=8) # 绘制折线图
ax1.plot(x, df['销售数量2'], color='lightgreen', marker='o', linestyle='-', linewidth=2) # 添加折线图数据标签
for i, v in enumerate(df['销售数量2']):
ax1.text(i, v + 3, str(v), ha='center', va='bottom', color='g', fontsize=8) # 添加标签和标题
ax1.set_xlabel('店铺名称', fontsize=10)
ax1.set_ylabel('销售数量/销售数量2', fontsize=10)
ax1.set_title('销售数量与销售数量2对比', fontsize=12)
ax1.set_xticks(x)
ax1.set_xticklabels(df['店铺名称'], rotation=0, ha='right')
ax1.legend(['销售数量', '销售数量2'], loc='upper left') # 设置坐标轴刻度标签字体大小
ax1.tick_params(axis='both', which='major', labelsize=8) # 增加网格线
ax1.grid(axis='y', linestyle='--', alpha=0.7) # 显示图形
plt.show()
Python 利用pandas和matplotlib绘制柱状折线图的更多相关文章
- 用Python的Pandas和Matplotlib绘制股票KDJ指标线
我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...
- 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线
我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...
- ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图
作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...
- Pandas:DataFrame绘制并保存折线图时不打开图形只保存文件
保存图形,用的是plt.savefig函数,只需要在保存图形之后,调用plt.close()关闭画布,就不会显示出来了: data.plot() outfile='image.png' plt.sav ...
- 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图
利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import pandas as pdimport matplotlib. ...
- Python利用pandas处理Excel数据的应用
Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...
- ECharts图表之柱状折线混合图
Echarts 官网主页 http://echarts.baidu.com/index.html Echarts 更多项目案例 http://echarts.baidu.com/echarts2/ ...
- Matplotlib基本图形之折线图
Matplotlib基本图形之折线图折线图特点 折线图是用折线将各数据连起来组成的图形常用来观察数据随时间变化的趋势例如:股票价格,温度变化,等等 示例代码: import os import tim ...
- 【学习总结】GirlsInAI ML-diary day-21-初识 Numpy, Matplotlib, Seanborn [柱状图、折线图、箱图]
[学习总结]GirlsInAI ML-diary 总 原博github链接-day21 初识 Numpy, Matplotlib, Seanborn [柱状图.折线图.箱图] 一.Titanic练习赛 ...
- python中matplotlib绘图封装类之折线图、条状图、圆饼图
DrawHelper.py封装类源码: import matplotlib import matplotlib.pyplot as plt import numpy as np class DrawH ...
随机推荐
- 基于GPT搭建私有知识库聊天机器人(六)仿chatGPT打字机效果
文章链接: 基于GPT搭建私有知识库聊天机器人(一)实现原理 基于GPT搭建私有知识库聊天机器人(二)环境安装 基于GPT搭建私有知识库聊天机器人(三)向量数据训练 基于GPT搭建私有知识库聊天机器人 ...
- MyBatis(RowBounds)分页了解内容
RowBounds 不在使用SQL实现分页 1.接口 List<User> getUserByRowBounds(); 2.mapper.xml <select id="g ...
- ubuntu server安装图形化界面
只需一个命令,然后重启即可: # apt-get install ubuntu-desktop # 查看下一次启动的设置 systemctl get-default # reboot
- vulnhub_me and my grilfriend
解题步骤 主机nmap扫描,开放22和80端口 访问该ip,发现只能本地访问 查看源代码,提示需要使用x-forwarded-for的请求头,可以在burp suite中每次添加一个请求头,也可以使用 ...
- WPF自定义控件之消息提示
创建消息提示控件 internal class Message : ContentControl { public int Time { get; set; } [Bindable(true)] pu ...
- 【go笔记】标准库-strconv
前言 标准库strconv提供了字符串类型与其他常用数据类型之间的转换. strconv.FormatX()用于X类型转字符串,如strconv.FormatFloat()用于浮点型转字符串. str ...
- FreeSWITCH通过mod_mariadb原生连接MySQL
前言 根据官方更新说明(https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.10.x+Release+notes),从1 ...
- golang1.21新特性速览
经过了半年左右的开发,golang 1.21 在今天早上正式发布了. 这个版本中有不少重要的新特性和变更,尤其是在泛型相关的代码上. 因为有不少大变动,所以建议等第一个patch版本也就是1.21.1 ...
- 《Kali渗透基础》08. 弱点扫描(二)
@ 目录 1:OpenVAS / GVM 1.1:介绍 1.2:安装 1.3:使用 2:Nessus 2.1:介绍 2.2:安装 2.3:使用 3:Nexpose 本系列侧重方法论,各工具只是实现目标 ...
- 如何正确实现一个自定义 Exception
最近在公司的项目中,编写了几个自定义的 Exception 类.提交 PR 的时候,sonarqube 提示这几个自定义异常不符合 ISerializable patten. 花了点时间稍微研究了一下 ...