用Python绘制条形图

1. 绘制条形图

前面讲解了折线图的绘制,但是似乎不太能直观地看出每个季度下各个项目利润的差距。或许,我们可以画出如下的条形图来试试。

代码改写

我们已经知道,折线图的绘制需要创建LineChart对象来实现。那么,条形图的绘制该如何实现呢?

条形图和折线图不同,需要创建的是BarChart对象

但是,画条形图与画折线图的过程是一致的,包括:

图表绘制:确认图的类型,引用表格的数据,设置图在工作表的位置;

图表信息和样式的优化:修改类别轴的标签,添加X轴、Y轴的标题,修改图的样式。

另外,BarChart对象LineChart对象在使用上也是类似的。
所以,只需一些小小的改动就可以绘制条形图。如以下代码,我已稍稍做了修改:

 

import os
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference

# 设置目标文件夹路径
path = './各部门利润表汇总/'
# 获取文件夹下的所有文件名
file_list = os.listdir(path)
# 遍历文件名列表,取得每一个文件名
for file_name in file_list:
    # 拼接文件路径
    file_path = path + file_name
    # 读取工作簿
    wb = load_workbook(file_path)
    # 定位到工作簿中的活跃工作表
    ws = wb.active

    # 实例化 BarChart() 类,得到 BarChart 对象
    chart = BarChart()
    # 引用工作表的部分数据
    data = Reference(worksheet = ws, min_row = 3, max_row = 9, min_col = 1, max_col = 5)
    # 添加被引用的数据到 BarChart 对象
    chart.add_data(data, from_rows = True, titles_from_data = True)
    # 添加 BarChart 对象到工作表中,指定生成折线图的位置
    ws.add_chart(chart, "C12")

    # 引用工作表的表头数据
    cats = Reference(worksheet=ws, min_row=2, max_row=2, min_col=2, max_col=5)
    # 设置类别轴的标签
    chart.set_categories(cats)
    # 设置 x 轴的标题
    chart.x_axis.title = "季度"
    # 设置 y 轴的标题
    chart.y_axis.title = "利润"
    # 设置折线图的颜色
    chart.style = 48

    # 保存工作簿
    wb.save(file_path)

print('条形图绘制成功!')

 

折线图绘制与条形图绘制的异同

其实,折线图绘制的代码与条形图绘制的代码只有两处不同

1)导入的类不一样,绘制条形图时,需要导入 BarChart类,而不是 LineChart类

2)创建的图表对象不一样,绘制条形图时,需要创建BarChart对象,而不是LineChart对象

需要注意的是,BarChart对象LineChart对象虽然绘制不同类型的图型,但它们有许多相同点

1)相同的方法:add_data()set_categories()

2)相同的属性:x_axis.titlex_axis.titlestyle

折线图与条形图的视觉效果

了解了两种图表绘制上的异同点之后,我们再看看在视觉上,条形图和折线图有什么不一样的地方。

折线图可以比较直观地看出每个项目的变化趋势,而条形图更能清晰地看出各个项目在同一季度的利润差距。

具体使用哪种类型的图表,需要根据你要分析的问题来选择。

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mez_Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值