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()
相关推荐
小大宇31 分钟前
python milvus 案例
开发语言·python·milvus
BerryS3N1 小时前
Java 后端转型大模型:Demo 能跑不等于能上线
java·人工智能·python·java后端·spring ai·langchain4j·大模型转型
制造数据与AI践行者老蒋1 小时前
智联工坊实战:从“金鱼记忆”到“记住了”:给制造Agent装上记忆芯片的完整指南
人工智能·python·langchain·制造
某林2122 小时前
ros从底层硬件到 Web 端部署
python·机器人·硬件架构·ros2
FBI HackerHarry浩2 小时前
AI大模型开发V2第四阶段机器学习概述
人工智能·python·机器学习
axinawang2 小时前
第22课 石头剪刀布
python
测试秃头怪3 小时前
postman接口测试详解
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
小白的后端世界3 小时前
LangChain 模型创建与调用实战:从 init_chat_model 到企业级多模型接入
人工智能·python·langchain
Zane19943 小时前
copy 和 deepcopy 到底在拷贝什么?一文讲清赋值、浅拷贝、深拷贝的引用关系
后端·python
AC赳赳老秦3 小时前
软著公开信息批量采集:OpenClaw 抓取软件著作权公开数据,分析企业技术布局方向
大数据·网络·人工智能·python·php·deepseek·openclaw