有时候我们会用到excel中的面积图来展现某一事物的趋势,那么如何使用python来制作面积图呢?
原始数据
面积图又分二维面积图和3D面积图,首先来看3D面积图如何处理。完整代码为:
from openpyxl import load_workbook
from openpyxl.chart import Reference,AreaChart3D
wb = load_workbook(filename = '员工统计.xlsx')
#查看所有sheet名字
sheetname = wb.sheetnames[0]
#指定其中一个sheet
ws = wb[sheetname]
#3D面积图
chart = AreaChart3D()
chart.title = sheetname
chart.style = 10
chart.y_axis.scaling.min = 0 # 最小值
chart.y_axis.majorUnit = 1000 # 步长值
chart.y_axis.scaling.max = 15000 # 最大值
chart.width = 20
chart.height = 13
chart.legend = None
#刻度线的显示位置 cross: 两边 in: 内 out: 外
chart.y_axis.minorTickMark = 'in'
chart.x_axis.minorTickMark = 'in'
#去除线条
chart.y_axis.majorGridlines = None
chart.x_axis.title = '姓名'
chart.y_axis.title = '薪资'
chart.z_axis.title = '绩效'
cat = Reference(ws, min_col=1, min_row=3, max_row=6)
data = Reference(ws, min_col=4, min_row=2, max_col=6, max_row=6)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cat)
ws.add_chart(chart, "A10")
wb.save("area.xlsx")
效果为:
二维面积图的处理代码为:
from openpyxl import load_workbook
from openpyxl.chart import AreaChart,Reference
wb = load_workbook(filename = '员工统计.xlsx')
#查看所有sheet名字
sheetname = wb.sheetnames[0]
#指定其中一个sheet
ws = wb[sheetname]
#二维面积图
chart = AreaChart()
chart.title = sheetname
chart.style = 10
chart.y_axis.scaling.min = 0 # 最小值
chart.y_axis.majorUnit = 1000 # 步长值
chart.y_axis.scaling.max = 15000 # 最大值
chart.width = 20
chart.height = 13
#刻度线的显示位置 cross: 两边 in: 内 out: 外
chart.y_axis.minorTickMark = 'in'
chart.x_axis.minorTickMark = 'in'
#去除线条
chart.y_axis.majorGridlines = None
chart.x_axis.title = '姓名'
chart.y_axis.title = '薪资'
cat = Reference(ws, min_col=1, min_row=3, max_row=6)
data = Reference(ws, min_col=4, min_row=2, max_col=6, max_row=6)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cat)
ws.add_chart(chart, "A10")
wb.save("area.xlsx")
效果图为: