插入柱形图,选择数据如下数据,图为
import os
import pandas as pd #导入panads
from openpyxl import load_workbook # 读取时导入这个
from openpyxl.styles import Font, Alignment #设置单元格格式
from openpyxl.utils import get_column_letter, column_index_from_string
from openpyxl.chart import BarChart3D,BarChart,Reference #柱形BarChart 3D柱BarChart3D
chart=BarChart() #柱形图
chart.title=namelist+' 营业指标'
chart.y_axis.title="金额"
chart.x_axis.title="年份"
chartdata=Reference(wbsheet, min_col=2, min_row=3, max_row=6, max_col=3)
chart.add_data(chartdata,titles_from_data=True) #把第一行当表例
xtitle=Reference(wbsheet, min_col=1, min_row=4, max_row=6, max_col=1)
chart.set_categories(xtitle)
chart.type = "col" #可以是'bar' 横条
chart.shape = 5
chart.height = 6.5 # default is 7.5
chart.width = 15 # default is 15
chart.style = 2 #1-8种可以使用,颜色不同,1为灰
chart.varyColors=True
wbsheet.add_chart(chart,'A4')
如选用横排的数据,则图表显示为下图
collists1=[3,5,7] #收入,成本,利润
collists2=[9,11,13,15] #销售、管理、财务费用及合计
collists3=[3,19,7,21] #收入、利润与指标对比
collists4=[5,20,15,22] #成本、三项费用与指标对比
chart=BarChart() #柱形图
chart.title=namelist+' 营业指标'
chart.y_axis.title="金额"
chart.x_axis.title="年份"
for collist1 in collists1:
chartdata=Reference(wbsheet, min_col=collist1, min_row=1, max_row=3, max_col=collist1)
chart.add_data(chartdata,titles_from_data=False) #把第一行当表例时,titles_from_data=True
#xtitle=Reference(wbsheet, min_col=coldata, min_row=2, max_row=3) #取得月份列为横行
#chart.set_categories(xtitle)
chart.type = "col" #可以是'bar' 横条
chart.shape = 5
chart.height = 6.5 # default is 7.5
chart.width = 15 # default is 15
chart.style = 2 #1-8种可以使用,颜色不同,1为灰
chart.showVal=True
wbsheet.add_chart(chart,'A4')
写入表的方向性,决定了图中序列的排列,数据横向与图中的横向是一致的,数据填加时,只要是遇到增加了数据,列有变化时,就增加一列数据,即图中横向增加一个柱形,目前想到的方法只有转置数据表,才能达到想要的效果。