源代码
from pyecharts import options as opts
from pyecharts.charts import Pie
import xlwings as xw
import pandas as pd
#读取excel文件中的数据
def read_excel(path):
pd.set_option('display.max_columns', None) #解决表格多列时中间省略显示问题(本程序用不到)
pd.set_option('display.max_rows', None) #解决表格多行时中间省略显示问题(本程序用不到)
pd.set_option('display.width', 5000) #解决表格打印换行
#读取excel文件中的数据
app = xw.App(visible = False, add_book = False)
workbook = app.books.open(path)
worksheet = workbook.sheets[0]
values = worksheet.range("A1").expand().options(pd.DataFrame, index = False).value
#print(values)
workbook.close()
app.quit()
return values
path = "pie_data.xlsx" #指定数据的文件路径绝对路径或相对路径
values = read_excel(path) #调用read_excel模块读取数据
#构造数据
x_data = values['名称'].tolist()
y_data = values['数量'].tolist()
data = [[x_data[i], y_data[i]] for i in range(len(x_data))]
print(data)
print(len(data))
#饼图的绘制
c = (
Pie()
.add(
"", #设置系列名称
data, #设置数据
center=["43%", "50%"], #设置图形所在的位置左右距离
#radius=["40%", "75%"], #设置环形饼图
rosetype="area" #设置为玫瑰图 radius 半径 area 面积
)
#.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"]) #设置颜色
.set_global_opts(
title_opts=opts.TitleOpts(title="Pie系列图的绘制"), #设置标题
legend_opts=opts.LegendOpts( pos_top="10%", pos_left="80%",orient="vertical"), #设置图例
)
.set_series_opts(
label_opts=opts.LabelOpts(formatter="{b}: {c} \n({d}%)"), #设置显示标签
tooltip_opts=opts.TooltipOpts( #设置鼠标触发显示标签
trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
)
)
.render("Pie系列图的绘制-8.html")
)