下面是“Python实现双轴组合图表柱状图和折线图的具体流程”的详细实例教程,包含两个示例说明。
1. 准备
1.1 安装必要的库
要进行数据可视化处理,我们需要使用Python中的一些库,我们需要提前安装以下几个库:
- Matplotlib: Python的数据可视化库
- Pandas: 数据处理库
具体安装可以在命令行中使用以下命令:
pip install matplotlib pandas
1.2 准备数据
我们使用Pandas读取并处理数据。本例中,我们将使用以下示例数据:
import pandas as pd
# 构建示例数据
data = {
'年份': [2016, 2017, 2018, 2019, 2020],
'游客数量': [10, 15, 20, 25, 35],
'营业额': [100, 150, 200, 250, 350]
}
# 将数据使用DataFrame进行格式化
df = pd.DataFrame(data)
2. 绘制双轴组合图表
2.1 创建figure和axes对象
import matplotlib.pyplot as plt
# 创建figure和axes对象
fig, ax1 = plt.subplots()
# 创建第二个轴对象
ax2 = ax1.twinx()
此处,我们创建了一个figure和一个axes对象,并按比例把它分成两部分,现在我们需要用对象ax2创建了第二个轴。
2.2 创建柱状图
# 绘制柱状图
ax1.bar(df['年份'], df['游客数量'], width=0.5)
我们使用ax1.bar
方法绘制柱状图。
2.3 创建折线图
# 绘制折线图
ax2.plot(df['年份'], df['营业额'], color='orange', linewidth=2)
我们使用ax2.plot
方法绘制折线图,并指定颜色为橘色,线宽为2。
2.4 配置图表
# 配置第一个轴
ax1.set_xlabel('年份')
ax1.set_ylabel('游客数量')
ax1.tick_params(axis='x', labelrotation=45)
# 配置第二个轴
ax2.set_ylabel('营业额(万元)')
ax2.tick_params(axis='y', colors='orange')
# 配置图例
ax1.legend(['游客数量'], loc='upper left')
ax2.legend(['营业额'], loc='upper right')
在此步骤中,我们完成了对图表的主要配置。我们设置第一个轴对象ax1
的标签和旋转,设置第二个轴对象ax2
的标签颜色,还设置了图例的位置和标签。
2.5 展示图表
# 展示图表
plt.show()
完整的代码示例:
import pandas as pd
import matplotlib.pyplot as plt
# 构建示例数据
data = {
'年份': [2016, 2017, 2018, 2019, 2020],
'游客数量': [10, 15, 20, 25, 35],
'营业额': [100, 150, 200, 250, 350]
}
# 将数据使用DataFrame进行格式化
df = pd.DataFrame(data)
# 创建figure和axes对象
fig, ax1 = plt.subplots()
# 创建第二个轴对象
ax2 = ax1.twinx()
# 绘制柱状图
ax1.bar(df['年份'], df['游客数量'], width=0.5)
# 绘制折线图
ax2.plot(df['年份'], df['营业额'], color='orange', linewidth=2)
# 配置第一个轴
ax1.set_xlabel('年份')
ax1.set_ylabel('游客数量')
ax1.tick_params(axis='x', labelrotation=45)
# 配置第二个轴
ax2.set_ylabel('营业额(万元)')
ax2.tick_params(axis='y', colors='orange')
# 配置图例
ax1.legend(['游客数量'], loc='upper left')
ax2.legend(['营业额'], loc='upper right')
# 展示图表
plt.show()
该示例代码将绘制一个具有两个轴(左边为柱状图,右边为折线图)的双轴组合图表。
3. 示例2
下面是另一个示例,将使用时间序列数据。该数据表示了一段时间内电商平台的月总销售额和月总利润。我们来看一下如何将这些数据绘制到单张双轴组合图表中:
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv("sales_data.csv")
# 将数据中的日期转换成pandas的时间格式
df['Date'] = pd.to_datetime(df['Date'])
# 对数据按日期排序
df = df.sort_values('Date')
# 创建figure和axes对象
fig, ax1 = plt.subplots()
# 创建第二个轴对象
ax2 = ax1.twinx()
# 绘制柱状图
ax1.bar(df['Date'], df['Monthly Sales'], width=20, alpha=0.5, color='blue')
# 绘制折线图
ax2.plot(df['Date'], df['Monthly Profit'], color='orange', linewidth=2)
# 配置第一个轴
ax1.set_xlabel('日期')
ax1.set_ylabel('销售额(元)')
ax1.tick_params(axis='x', labelrotation=45)
# 配置第二个轴
ax2.set_ylabel('利润(元)')
ax2.tick_params(axis='y', colors='orange')
# 配置图例
ax1.legend(['月总销售额'], loc='upper left')
ax2.legend(['月总利润'], loc='upper right')
# 展示图表
plt.show()
如何运行该示例:
- 首先读取数据,使用
pd.read_csv
方法读取csv文件 - 由于数据中包含了日期这个格式,所以我们需要把日期转换成pandas的时间格式。使用
pd.to_datetime
方法将日期转换为时间格式。 - 然后对数据按日期排序,确保能覆盖全时间段的数据
- 创建figure和axes对象
- 创建第二个轴对象
- 绘制柱状图,使用
ax1.bar
方法,并指定width和alpha参数. - 绘制折线图,我们使用
ax2.plot
方法,设置颜色和线宽。 - 配置轴,设置标签,设置旋转,以及第二个轴使用颜色。
- 配置图例,指定标签和位置。
- 最后展示图表。
图表的输出将会是一个时间序列的双轴组合图表,其中左轴为月总销售额,右轴为月总利润。