使用 Python 在 Excel 中绘制次坐标轴图
在数据分析与可视化领域,Excel 是一个广泛使用的工具,能够通过绘制图表来提供更直观的数据理解。通过 Python,我能更高效地生成和操作 Excel 文件。今天,我们将关注如何在 Excel 中利用 Python 绘制带有次坐标轴的图表。
什么是次坐标轴
次坐标轴是指在主坐标轴旁边用于展示另一组数据的坐标轴。在一些情况下,数据的取值范围截然不同,使用次坐标轴可以使得两组数据在同一个图表中更易于对比。
例如,一个企业的销售额(以千元为单位)和利润率(以百分比为单位)可能会有很大的差距,使用次坐标轴可以更清晰地呈现这两者的关系。
安装必要的库
在开始之前,请确保你已安装 pandas
和 openpyxl
库。这两个库能帮助你读取和操作 Excel 文件。
你可以通过以下命令安装:
pip install pandas openpyxl matplotlib
示例数据
在本例中,我们将使用一个简单的示例数据集,该数据集包含时间、销售额和利润率三个字段。数据将存储在一个 Excel 文件中。
创建示例数据集
import pandas as pd
# 创建示例数据
data = {
'时间': ['2021-01', '2021-02', '2021-03', '2021-04', '2021-05'],
'销售额': [100, 150, 200, 250, 300], # 单位:千元
'利润率': [10, 15, 20, 25, 30] # 单位:%
}
# 转换为 DataFrame
df = pd.DataFrame(data)
# 输出 DataFrame 到 Excel
df.to_excel('sales_data.xlsx', index=False)
绘制图表
接下来,我们将使用 matplotlib
来读取 Excel 中的数据,并绘制出带次坐标轴的图表。
示例代码
import pandas as pd
import matplotlib.pyplot as plt
# 读取 Excel 文件
df = pd.read_excel('sales_data.xlsx')
# 创建一个新的图形
fig, ax1 = plt.subplots()
# 绘制销售额
ax1.bar(df['时间'], df['销售额'], color='b', alpha=0.6, label='销售额 (千元)')
ax1.set_xlabel('时间')
ax1.set_ylabel('销售额 (千元)', color='b')
# 创建次坐标轴
ax2 = ax1.twinx()
ax2.plot(df['时间'], df['利润率'], color='r', marker='o', label='利润率 (%)')
ax2.set_ylabel('利润率 (%)', color='r')
# 添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# 展示图形
plt.title('销售额与利润率对比图')
plt.show()
代码解析
- 数据读取:使用
pd.read_excel()
读取 Excel 中的数据。 - 绘图:
- 使用
ax1.bar()
绘制柱状图表示销售额。 - 使用
ax1.twinx()
创建次坐标轴,并通过ax2.plot()
绘制利润率的折线图。
- 使用
- 添加图例:使用
legend()
函数添加图例,以区分两个数据系列。
图表展示
sequenceDiagram
participant A as 用户
participant B as Python程序
participant C as Excel文件
A->>B: 发送请求
B->>C: 读取销售数据
C-->>B: 返回数据
B->>A: 绘制图表展示
上面的图表将清晰地显示出销售额和利润率在同一时间段内的变化,并通过不同的颜色和坐标轴进行区分。
结尾
通过本文,我们学习了如何在 Excel 中利用 Python 绘制带有次坐标轴的图表。次坐标轴的使用能够有效地帮助我们对比不同量级的数据,提供更全面的分析视角。希望通过这些代码示例,你能更好地掌握数据可视化的技巧,提升你的数据分析能力。无论是在工作中还是在学习中,这样的技能都将是不可多得的财富。