这是一份openpyxl的使用指南。

大体内容翻译自官网 https://openpyxl.readthedocs.io/en/stable/charts/bar.html#vertical-horizontal-and-stacked-bar-charts

本文在官网基础上会有一些改动。代码请参考 https://github.com/RustFisher/python-playground

本文链接 https://rustfisher.com/2019/11/14/Python/Python-openpyxl_charts_Bar_and_Column/

柱形图

数据会被绘制成垂直,水平或者是层叠效果的柱形图。

注意:

  • 接下来的设置会影响到不同类型的图表。
  • 设置类别可以控制柱形图是垂直或是水平。
  • 使用层叠图形时,需要设置overlap成100。
  • 如果柱形是水平的,x和y坐标会对调过来。

2D图表

示例代码如下,根据给定的数据绘制了4张图表。

  1. from openpyxl import Workbook
  2. from openpyxl.chart import BarChart, Series, Reference
  3. def bar_chart_demo():
  4. wb = Workbook(write_only=True)
  5. ws = wb.create_sheet()
  6. rows = [
  7. ('Number', 'Batch 1', 'Batch 2'),
  8. (2, 10, 30),
  9. (3, 40, 60),
  10. (4, 50, 70),
  11. (5, 20, 10),
  12. (6, 10, 40),
  13. (7, 50, 30),
  14. ]
  15. for row in rows:
  16. ws.append(row)
  17. chart1 = BarChart()
  18. chart1.type = "col"
  19. chart1.style = 10
  20. chart1.title = "Bar Chart"
  21. chart1.y_axis.title = 'Test number'
  22. chart1.x_axis.title = 'Sample length (mm)'
  23. data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)
  24. cats = Reference(ws, min_col=1, min_row=2, max_row=7)
  25. chart1.add_data(data, titles_from_data=True)
  26. chart1.set_categories(cats)
  27. chart1.shape = 4
  28. ws.add_chart(chart1, "A10")
  29. from copy import deepcopy
  30. chart2 = deepcopy(chart1)
  31. chart2.style = 11
  32. chart2.type = "bar"
  33. chart2.title = "Horizontal Bar Chart"
  34. ws.add_chart(chart2, "I10")
  35. chart3 = deepcopy(chart1)
  36. chart3.type = "col"
  37. chart3.style = 12
  38. chart3.grouping = "stacked"
  39. chart3.overlap = 100
  40. chart3.title = 'Stacked Chart'
  41. ws.add_chart(chart3, "A27")
  42. chart4 = deepcopy(chart1)
  43. chart4.type = "bar"
  44. chart4.style = 13
  45. chart4.grouping = "percentStacked"
  46. chart4.overlap = 100
  47. chart4.title = 'Percent Stacked Chart'
  48. ws.add_chart(chart4, "I27")
  49. wb.save("out/bar.xlsx")
  50. if __name__ == '__main__':
  51. bar_chart_demo()

译者注:这里调整了图表在excel中的位置,原文是在G列,即G10G27,这里改为了I列。代码格式也有微调。

我们需要生成图表的时候,Excel会要我们先选定数据范围(来源)。在代码中用Reference来指定数据来源范围。

3D图表

绘制3D图表,使用BarChart3D

  1. def bar_3d():
  2. wb = Workbook()
  3. ws = wb.active
  4. rows = [
  5. (None, 2013, 2014),
  6. ("Apples", 5, 4),
  7. ("Oranges", 6, 2),
  8. ("Pears", 8, 3)
  9. ]
  10. for row in rows:
  11. ws.append(row)
  12. data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=4)
  13. titles = Reference(ws, min_col=1, min_row=2, max_row=4)
  14. chart = BarChart3D()
  15. chart.title = "3D Bar Chart"
  16. chart.add_data(data=data, titles_from_data=True)
  17. chart.set_categories(titles)
  18. ws.add_chart(chart, "E5")
  19. wb.save("out/bar3d.xlsx")

创建好的图表用WPS打开发现是2D的。用Office Excel打开是3D的。

Python openpyxl Excel绘制柱形图的更多相关文章

  1. Python Excel 绘制柱形图

    本文主要讲述如何使用Python操作Excel绘制柱形图. 相关代码请参考 https://github.com/RustFisher/python-playground 本文链接:https://w ...

  2. python处理Excel - xlrd xlwr openpyxl

    python处理Excel - xlrd xlwr openpyxl 1 xlrd和xlwt Todo: 使用xlrd和xlwt读写Excel文件的方法和示例代码,待续... 参考链接: Creati ...

  3. python操作excel——openpyxl

    一.概述 python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html 官方文档:https://openpyxl.read ...

  4. 转 Python - openpyxl 读写操作Excel

    Python - openpyxl 读写操作Excel   openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...

  5. Python 利用Python操作excel表格之openyxl介绍Part2

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart()    ...

  6. 震惊!当Python遇到Excel后,将开启你的认知虫洞

    本文主要内容:   1. Excel,你为什么如此强大 2. 软件开发也需要团队作战 3. Excel的集成方案演化 4. macOS特有的集成方案:applescript 5. Python与Exc ...

  7. [转]用Python读写Excel文件

    [转]用Python读写Excel文件   转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...

  8. python 处理 Excel 表格

    see: http://www.cnblogs.com/sunada2005/p/3193300.html 一.可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表 ...

  9. python读写Excel文件的函数--使用xlrd/xlwt

    python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket  The ...

随机推荐

  1. PhpSpreadsheet 导出特定格式 — 广告请款单

    需求说明 最近需要实现一个导出这种格式的Excel表单,之前都有用过导出Excel的功能,但大都是表头+数据的形式,只用于获取数据,没有太多样式要求,不用合并单元格.合并居中等,也不用对每一行数据特异 ...

  2. Zookeeper未授权访问测试

    前言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  3. django html母版

    08.12自我总结 django母版 一.母版写的格式 在需要导入的地方写 {% block 名字定义 %} {% endblock %} 二.导入模板 {% extends 'FUCK.html' ...

  4. HelloWin详解

    (注意:遇到程序在弄懂之后一定要自己去敲,一定要自己去敲,一定要自己去敲) (注意:遇到程序在弄懂之后一定要自己去敲,一定要自己去敲,一定要自己去敲) (注意:遇到程序在弄懂之后一定要自己去敲,一定要 ...

  5. [Noip1997] 棋盘问题(2)

    题目描述 在N×NN \times NN×N的棋盘上(1≤N≤10)(1≤N≤10)(1≤N≤10),填入1,2,…,N21,2,…,N^21,2,…,N2共N2N^2N2个数,使得任意两个相邻的数之 ...

  6. linux下 Mysql 安装使用

    .安装mysql sudo apt-get install mysql-server mysql-client sudo service mysql restart 2.5.7版本以上修修改updat ...

  7. linux::jsoncpp库

    下载库:http://sourceforge.net/projects/jsoncpp/files/ tar -zxvf jsoncpp-src- -C jsoncpp () 安装 scons $ s ...

  8. 安装Go语言及搭建Go语言开发环境

    一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://gol ...

  9. php有orm吗

    ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中.本质上就是将数据从一种形式转换到另外一种形式. ORM提供了所有SQL语句的生成,代码人员远离了数据库概念.从 ...

  10. sql注入100种姿势过waf(二):过安全狗

    仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 先去安全狗网站下载最新的安全狗版本 从官网下载 windwos apache版 v4.0.2395  最新版   数据库是mysql ...