Python自动化办公:openpyxl绘制图表

Python自动化办公:openpyxl绘制图表_第1张图片

在后台回复【阅读书籍】

即可获取python相关电子书~

Hi,我是山月。

之前给大家分享了openpyxl的基础和进阶教程:

  • Python自动化办公:openpyxl教程(基础)

  • Python自动化办公:openpyxl教程(进阶)。

今天来给大家分享openpyxl的最后一个教程:透视数据表和图表。


由于文章包含了大量代码,为了阅读方便,代码设置成了图片的格式,如果需要源代码的同学,可以在后台回复【openpyxl图表】来获取~

参考自官网:https://openpyxl.readthedocs.io/en/stable/。

01

数据透视表

如果你经常使用excel的话,对于数据透视表应该不陌生。

但注意的是openpyxl并不能创建数据透视表,只能读取透视表以及编辑和操作现有的数据透视表,比如可以改变它们的范围或设置是否自动更新。

当然,对于python来说,可以利用pandas来创建数据透视表。这个暂且不表,以后再和大家分享。

在这里我们还是来看看openpyxl对数据透视表的操作。

假如现在有这样一个excel文件,它包含了两个数据透视表:

Python自动化办公:openpyxl绘制图表_第2张图片

如果我们要对数据进行更改,比把第2行的红儿年龄增加100变成182,那如何使工作薄里的透视表也进行相应的更改呢?

代码实现:

from openpyxl import load_workbook # 导入模块
wb = load_workbook("数据.xlsx") # 打开已有数据透视表的工作薄
ws = wb["Sheet1"] # 选择工作表Sheet1

ws['B2'] = 182  # B2单元格数据增加100,改成182

pivot = ws._pivots[0]  # 选择第一个透视表
pivot.cache.refreshOnLoad = True # 根据最新数据刷新透视表
wb.save('实例.xlsx')

效果:

Python自动化办公:openpyxl绘制图表_第3张图片

可以发现第一个透视表内容进行了变化,第二个透视表的内容并没有发生变化。


对于透视表其他的一些功能,大家如果有需要的话可以自行研究,对于山月来说,在它已有的功能基础上,最有用的莫过于刷新这个功能了。

下面我们来看看图表的部分。

02

图表

1、创建图表

我们以一个最简单的柱形图为例,来看看openpyxl如何创建图表。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference # BarChart:条形图、柱形图

wb = Workbook()
ws = wb.active

# 写入一列数数据
for i in range(10):
    ws.append([i])

values = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10) # 选择图表的数据源
chart = BarChart() # 创建一个BarChart对象
chart.add_data(values) # 给BarChart对象添加数据源
ws.add_chart(chart, "E15") # 在工作表上添加图表,并指定图表左上角锚定的单元格。
wb.save('实例.xlsx') # 保存工作薄

效果:

Python自动化办公:openpyxl绘制图表_第4张图片

注意:如果不指定左上角锚定的单元格,默认为 E15;大小默认为 15 x 7.5 厘米(在我的电脑上大约是9列15行)。

其实创建图表的流程也很简单:导入对应的图表模块--选择数据源--创建图表对象--添加数据源--指定位置绘制图表。

2、轴范围和比例

1、最小值和最大值

我们可以手动设置轴的最小值和最大值以在图表上显示特定的区域。

Python自动化办公:openpyxl绘制图表_第5张图片

效果:

Python自动化办公:openpyxl绘制图表_第6张图片

2、对数缩放

x 轴和 y 轴都可以进行对数缩放,对数的底可以设置为任何有效的浮点数。如果 x 轴以对数方式缩放,则域中的负值将被丢弃。

Python自动化办公:openpyxl绘制图表_第7张图片

效果:

Python自动化办公:openpyxl绘制图表_第8张图片

3、轴方向

轴方向由缩放方向属性控制,该属性的值可以是正常方向的“minMax”或反向的“maxMin”。

Python自动化办公:openpyxl绘制图表_第9张图片

效果:

Python自动化办公:openpyxl绘制图表_第10张图片

4、添加第2个轴

添加第二个轴实际上涉及创建第二个图表,该图表与第一个图表共享一个公共 x 轴,但有一个单独的 y 轴。

cc8783235c8daf3a8d8b545c926719e9.png

效果:

Python自动化办公:openpyxl绘制图表_第11张图片

3、更改图表布局

可以使用布局类实例的布局属性来设置图表的布局。


1、图表布局

1)Size and position

图表可以通过x和y调整位置,w和h调整大小,单位是图表区的比例。图表不能被定位在图表区之外,宽度和高度是主要的约束条件:如果x+w>1,那么x=1-w。

  • x是指从左边开始的水平位置

  • y 是从顶部看的垂直位置

  • h是图表相对于图表区的高度

  • w是图表区的宽度

2)Mode

除了大小和位置,相关属性的模式也可以设置为factor 或 edge,其中factor是默认值。设置成edge:

layout.xMode = edge

3)Target

布局目标可以设置在外侧(outer)或内侧(inner),默认是外侧(outer)。设置成内侧:

layout.layoutTarget = inner

2、图例布局

图例的位置可以设置:r、l、t、b 和 tr,分别代表右、左、上、下和右上,默认值为 r。设置成右上:

legend.position = 'tr'

也可以使用手动布局:

legend.layout = ManualLayout()

3、实例

Python自动化办公:openpyxl绘制图表_第12张图片

效果:

Python自动化办公:openpyxl绘制图表_第13张图片

4、添加样式

整个数据系列和单个数据点都可以通过图形属性进行样式设置。

Python自动化办公:openpyxl绘制图表_第14张图片

效果:

Python自动化办公:openpyxl绘制图表_第15张图片

5、仪表图

仪表图将圆环图和饼图组合在一个图表中。

圆环图有四个切片:前三个切片对应于仪表的颜色;第四片,也就是一半的圆环图,是不可见的。

饼图有三个切片:第一个和第三个切片是不可见的,第二个切片可以充当仪表上的指针。

Python自动化办公:openpyxl绘制图表_第16张图片

效果:

Python自动化办公:openpyxl绘制图表_第17张图片

6、图表表

图表表是包含图表的特殊工作表。图表的所有数据必须位于不同的工作表上。

Python自动化办公:openpyxl绘制图表_第18张图片

效果:

Python自动化办公:openpyxl绘制图表_第19张图片

7、图表实例

1、Area Charts 面积图

1)2D Area Charts 二维面积图

面积图类似于折线图,只是绘制线下方的区域被填充。

通过将分组设置为“standard”, “stacked” 或“percentStacked”可以获得不同的变体; “standard”是默认值。

Python自动化办公:openpyxl绘制图表_第20张图片

效果:

Python自动化办公:openpyxl绘制图表_第21张图片

2)3D Area Charts 3D 面积图

Python自动化办公:openpyxl绘制图表_第22张图片

效果:

Python自动化办公:openpyxl绘制图表_第23张图片

2、Bar and Column Charts 条形图和柱形图

在条形图中,值被绘制为水平条或垂直柱。

1)Vertical, Horizontal and Stacked Bar Charts 垂直、水平和堆积条形图

以下设置会影响不同的图表类型:

  • 通过将 type 分别设置为 col 或 bar ,可以在垂直和水平条形图之间进行切换。

  • 使用堆积图表时,重叠需要设置为 100。

  • 如果条形图是水平的,则 x 轴和 y 轴是相反的。

Python自动化办公:openpyxl绘制图表_第24张图片

效果:

Python自动化办公:openpyxl绘制图表_第25张图片

2)3D Bar Charts3D 条形图

Python自动化办公:openpyxl绘制图表_第26张图片

效果:

Python自动化办公:openpyxl绘制图表_第27张图片

3、Bubble Charts 气泡图

气泡图与散点图非常相似,但气泡图可以增加第三个柱形来指定所显示的气泡的大小,以便表示数据系统中的数据点。

Python自动化办公:openpyxl绘制图表_第28张图片

效果:

Python自动化办公:openpyxl绘制图表_第29张图片

4、Line Charts 折线图

1)Line Charts 折线图

在折线图中,类别数据沿水平轴均匀分布,所有值数据沿垂直轴均匀分布。有三种折线图:standard, stacked ,percentStacked。

Python自动化办公:openpyxl绘制图表_第30张图片

效果:

Python自动化办公:openpyxl绘制图表_第31张图片

2)3D Line Charts 3D 折线图

3D折线图将每个数据行或数据列显示为一个三维条带。三维折线图有水平坐标轴、垂直坐标轴和竖坐标轴。

Python自动化办公:openpyxl绘制图表_第32张图片

效果:

Python自动化办公:openpyxl绘制图表_第33张图片

5、Scatter Charts 散点图

散点图,又称xy图,它将 X 值和 Y 值合并到单一数据点并按不均匀的间隔或簇来显示它们。

散点图通常用于显示和比较数值,例如科学数据、统计数据和工程数据。

散点图有以下几种类型:‘line’、‘lineMarker’、‘marker’、‘smooth’、‘smoothMarker’。

Python自动化办公:openpyxl绘制图表_第34张图片

效果:

Python自动化办公:openpyxl绘制图表_第35张图片

6、Pie Charts饼图

1)Pie Charts饼图

饼图将数据绘制为圆形切片,每个切片代表整体的百分比。切片按顺时针方向绘制,0° 位于圆的顶部。

饼图只能获取单个系列的数据,图表的标题将默认为系列的标题。

Python自动化办公:openpyxl绘制图表_第36张图片

效果:

Python自动化办公:openpyxl绘制图表_第37张图片

2)Projected Pie Charts 复合饼图

复合饼图从饼图中提取一些切片并将它们投影到第二个饼图或条形图中。当数据系列中有几个较小的项目时,这很有用。

图表可以根据百分比percent、值 val(ue) 或位置 pos(ition)进行拆分。如果未设置任何内容,则应用程序决定使用哪个。此外,可以定义自定义拆分。

Python自动化办公:openpyxl绘制图表_第38张图片

效果:

Python自动化办公:openpyxl绘制图表_第39张图片

3)3D Pie Charts 3D 饼图

Python自动化办公:openpyxl绘制图表_第40张图片

效果:

Python自动化办公:openpyxl绘制图表_第41张图片

7、Doughnut Charts 圆环图

仅排列在工作表的列或行中的数据可以绘制为圆环图。

像饼图一样,圆环图也显示了部分与整体的关系,但圆环图可以包含多个数据系列,并且它们使用的是环而不是圆形。

Python自动化办公:openpyxl绘制图表_第42张图片

效果:

Python自动化办公:openpyxl绘制图表_第43张图片

 8、Radar Charts 雷达图

在工作表中以列或行的形式排列的数据可以绘制为雷达图。雷达图比较若干数据系列的聚合值。

雷达图有两种类型:标准型standard,即用线标记的区域;以及填充型filled,即整个区域都被填充。


标记marker 类型没有作用,如果需要标记,可以为相关系列设置这些标记。

Python自动化办公:openpyxl绘制图表_第44张图片

效果:

Python自动化办公:openpyxl绘制图表_第45张图片

9、Stock Charts 股价图

以特定顺序排列在工作表的列或行中的数据可以绘制为股价图。顾名思义,股价图可以显示股价的波动。 不过这种图表也可以显示其他数据(如日降雨量和每年温度)的波动。 

必须按正确的顺序组织数据才能创建股价图。例如,要创建一个简单的盘高-盘低-收盘图(high-low-close),应该按照最高价、最低价和收盘价作为列标题的顺序排列数据。

股价图有两种类型:

  • 盘高-盘低-收盘图(high-low-close)本质上是一个没有线条且标记设置为XYZ的折线图。它还将 hiLoLines 设置为 True。

  • 开盘-盘高-盘低-收盘图(open-high-low-close) 与盘高-盘低-收盘图(high-low-close)图表相同,每个数据点的标记设置为 XZZ 和 upDownLines。

也可以通过将股价图与交易量的条形图相结合来添加交易量。

Python自动化办公:openpyxl绘制图表_第46张图片

效果:

Python自动化办公:openpyxl绘制图表_第47张图片

10、Surface charts 曲面图

在工作表中以列或行的形式排列的数据可以绘制为曲面图。如果希望得到两组数据间的最佳组合,曲面图将很有用。

例如在地形图上,颜色和图案表示具有相同取值范围的地区。当类别和数据系列都是数值时,可以创建曲面图。

默认情况下,所有曲面图都是 3D的。可以通过设置旋转和透视来创建 2D 框架图(2D wireframe) 和曲面图 (contour)。

Python自动化办公:openpyxl绘制图表_第48张图片

效果:

Python自动化办公:openpyxl绘制图表_第49张图片

今天的内容完成啦,为持续学习的你点个赞吧

想要文中所有图片对应的代码,可以在后台回复【openpyxl图表】来获取哦~

已经到底啦~(≧▽≦*)/~

4b99b3aa206eac523383b164b6e508e8.png 往 期 推 荐 6e9c6e12e9c7b9831d9c15c4411583ec.png

如何用Python做日历?

2022-01-10

Python自动化办公:openpyxl绘制图表_第50张图片

Python实战:个人贷款计算器

2022-01-14

Python自动化办公:openpyxl绘制图表_第51张图片

年会将近?赶紧学学如何用Python做个抽奖界面

2022-01-02

Python自动化办公:openpyxl绘制图表_第52张图片

5个在线工具推荐

2021-12-29

Python自动化办公:openpyxl绘制图表_第53张图片

Python自动化办公:openpyxl绘制图表_第54张图片

您的“点赞”、“在看”和 “分享”是我们产出的动力。

你可能感兴趣的:(python,数据分析,css,数据可视化,excel)