如何使用Python Matplotlib绘制包含正负值的年份与利润数据图表
适配图表类型说明
最适合展示该类年度正负利润数据的图表为正负分组柱状图,该类图表可以直观区分每年的盈利/亏损状态,数值大小对应柱形高度,正数值(盈利)柱形向上延伸,负数值(亏损)柱形向下延伸,年度利润对比一目了然。
现有代码异常原因
代码运行输出不符合预期的核心原因是profits列表中存储的是字符串格式的数据,Matplotlib无法识别字符串的数值大小,不能正确计算渲染柱形高度,最终导致异常输出。
正确实现代码
from matplotlib import pyplot as plt # 原始数据 years = ['2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020'] profits = ['362', '622', '-409', '-92', '-148', '-130', '-128', '98', '-74', '35', '-419'] # 将利润数据从字符串转为整数类型 profits_num = [int(i) for i in profits] # 为盈利、亏损设置不同颜色区分 bar_colors = ['#2ecc71' if i > 0 else '#e74c3c' for i in profits_num] # 设置画布尺寸 plt.figure(figsize =(10, 7)) # 绘制柱状图 plt.bar(years, profits_num, color=bar_colors) # 添加图表标注信息 plt.title('2010-2020年度利润变化', fontsize=14) plt.xlabel('年份', fontsize=12) plt.ylabel('利润', fontsize=12) # 添加水平网格线方便读取数值 plt.grid(axis='y', linestyle='--', alpha=0.7) # 添加0值基准线 plt.axhline(y=0, color='#333', linewidth=1) # 展示图表 plt.show()
内容的提问来源于stack exchange,提问作者Krishna Gupta
相关产品推荐
相关产品推荐

