Python 中 Plot 设置两个纵坐标的方案
在数据分析和可视化过程中,常常会遇到需要在同一图表中展示不同类型数据的情况。为了更直观地展示数据,使用双纵坐标系统是非常有效的方式。本文将通过具体示例,介绍如何使用 Python 中的 matplotlib
库来实现双纵坐标图的绘制。
问题背景
假设我们有一个关于某公司的销售额和广告支出的数据集。销售额和广告支出分别使用不同的单位(前者为万元,后者为万元),但它们对公司的利润有着密切关系。在这个例子中,我们希望在同一张图中描绘出销售额和广告支出,以便于更好地分析二者之间的关系。
数据准备
我们将根据假设的数据集创建一个包含以下内容的 DataFrame:
import pandas as pd
data = {
'月份': ['1月', '2月', '3月', '4月', '5月', '6月'],
'销售额': [10, 20, 30, 40, 50, 60],
'广告支出': [2, 3, 5, 8, 10, 12]
}
df = pd.DataFrame(data)
使用 Matplotlib 绘制双纵坐标图
以下是实现双纵坐标图的示例代码:
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
# 绘制销售额曲线
ax1.set_xlabel('月份')
ax1.set_ylabel('销售额(万元)', color='tab:blue')
ax1.plot(df['月份'], df['销售额'], color='tab:blue', label='销售额', marker='o')
ax1.tick_params(axis='y', labelcolor='tab:blue')
# 创建第二个纵坐标
ax2 = ax1.twinx()
ax2.set_ylabel('广告支出(万元)', color='tab:red')
ax2.plot(df['月份'], df['广告支出'], color='tab:red', label='广告支出', marker='o')
ax2.tick_params(axis='y', labelcolor='tab:red')
# 添加标题和图例
plt.title('销售额与广告支出对比')
fig.tight_layout()
plt.show()
代码说明
- 数据准备:我们首先准备了一个包含“月份”、“销售额”和“广告支出”的数据框。
- 创建轴:我们通过
plt.subplots()
创建一个图和一个主坐标轴ax1
。 - 绘制曲线:使用
ax1.plot()
绘制销售额的曲线,并设置相应的颜色和标签。 - 创建第二个纵坐标:通过
ax1.twinx()
创建一个共享 x 轴的第二个纵坐标,使用ax2.plot()
绘制广告支出的曲线。 - 美化图表:设置图表的标题和布局,使整体效果更加美观。
相关流程的顺序描述
下面是对这个过程的一种简单描述,使用 mermaid 语法来表示:
sequenceDiagram
participant DataPrep as 数据准备
participant Plot as 绘图
participant Show as 显示图像
DataPrep->>Plot: 准备数据
Plot->>Plot: 创建主纵坐标
Plot->>Plot: 绘制销售额曲线
Plot->>Plot: 创建第二个纵坐标
Plot->>Plot: 绘制广告支出曲线
Plot->>Show: 显示最终图像
结论
通过上述示例,我们成功地在同一个图表中展示了销售额和广告支出的关系,利用了 Matplotlib 库强大的绘图能力。双纵坐标图为比较不同单位及范围的变量提供了方便的方式,解决了数据可视化中的一个常见难题。在实际工作中,合理选择和使用双纵坐标图,可以帮助我们更好地洞察数据之间的关系,进而指导我们的决策。希望本文对你有所帮助,如果你对数据可视化有更多需求,欢迎继续探索 Matplotlib 的更多功能。