看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)给定某电商平台2023年月度增长率数据,要求使用pandas的plot()方法绘制条件着色的柱状图。源数据如下:
import pandas as pd
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = {
'月份': ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
'增长率': [0.08, -0.12, 0.25, 0.18, 0.22, 0.31, 0.15, 0.14, 0.12, 0.07, 0.50, -0.16]
}
df = pd.DataFrame(data)
df.set_index('月份', inplace=True)
print(df)
输出结果:
增长率
月份
1月 0.08
2月 -0.12
3月 0.25
4月 0.18
5月 0.22
6月 0.31
7月 0.15
8月 0.14
9月 0.12
10月 0.07
11月 0.50
12月 -0.16
具体要求:
代码如下:
# 创建画布
plt.figure(figsize=(12, 6))
# 根据正负值设置颜色
colors = ['green' if x >= 0 else 'red' for x in df['增长率']]
# 绘制柱状图
ax = df['增长率'].plot(kind='bar', title='月度增长率',
color=colors, alpha=0.7)
# 设置Y轴标签
plt.ylabel('增长率')
# 添加数值标签
for i, v in enumerate(df['增长率']):
ax.text(i, v + (0.01 if v >= 0 else -0.03),
f'{v:.2f}',
ha='center', va='bottom' if v >= 0 else 'top',
fontweight='bold')
# 显示图形
plt.tight_layout()
plt.show()
输出结果:
生成一个条件着色的柱状图,显示:
参考代码使用pandas plot()方法实现条件着色柱状图:
关键技巧:通过条件判断生成颜色列表,可以实现数据驱动的可视化效果,正负值使用对比色可以直观显示数据的好坏趋势,数值标签的添加增强了图表的可读性。
(完)
更新时间:2025-09-21 10:08:34 标签:pandas python 柱状图