在学习工作中,会经常遇见需要制作很多图表,虽然Word里面也提供的有图表插入,问卷星的自带图表有点不喜欢,想自己做,但是手动处理几十个甚至几百个量化数据就很麻烦,所以尝试用python处理了这个问题。
支持的问卷形式:
逻辑方法:因为我这边的调查问卷结果是固定的几个选项,区别在于问题选项的选择人数不同和问题标题不同,通过问卷星导出的Word问卷改成Excel格式后即可处理。
主要运用工具:python????????openpyxl库????????pyecharts库
首先CMD安装以上所需要的库:
pip install openpyxl
#安装Excel的一个处理库
pip install pyecharts
#安装pyecharts图表绘制库
pip install snapshot-pyppeteer
#安装将pyecharts绘制出来的HTML图表转换为PNG的库
pyppeteer-install
#安装pyppeteer
?需要将问卷导出这种Excel?格式:
?python代码:这边做得是饼图,需要其他形状可以参考其他形式的用法【Python可视化】超详细Pyecharts 1.x教程,让你的图表动起来~ - AwesomeTang - 博客园)
#库介绍https://pyecharts.org/#/zh-cn/render_images
import openpyxl
from snapshot_pyppeteer import snapshot
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.render import make_snapshot
quesum = eval(input("请输入有多少个调查问题:"))
for i in range(1,quesum+1):
#打开excel
book = openpyxl.load_workbook('Excel文件名.xlsx')
sheetname = book.worksheets[0]
#获取
cell1 = sheetname.cell(row=1+6*(i-1),column=1)#问题文本
ID1 = cell1.value
cell2 = sheetname.cell(row=2+6*(i-1),column=2)#非常同意选择人数
ID2 = cell2.value
cell3 = sheetname.cell(row=3+6*(i-1),column=2)#同意选择人数
ID3 = cell3.value
cell4 = sheetname.cell(row=4+6*(i-1),column=2)#一般选择人数
ID4 = cell4.value
cell5 = sheetname.cell(row=5+6*(i-1),column=2)#不同意选择人数
ID5 = cell5.value
cell6 = sheetname.cell(row=6+6*(i-1),column=2)#非常不同意选择人数
ID6 = cell6.value
#关闭
book.close()
# 饼图
cate = ['非常同意', '同意', '一般', '不同意', '非常不同意']
data = [ID2, ID3, ID4, ID5, ID6]
pie = (Pie()
.add('', [list(z) for z in zip(cate, data)],
radius=["30%", "75%"],
rosetype="radius")
.set_global_opts(title_opts=opts.TitleOpts(title="调查数据", subtitle=ID1))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
)
make_snapshot(snapshot, pie.render(), ID1+".png")
print("现在完成:"+ID1)
print("all is Ok!")
最后运行即可,批量得到所有图片啦~
?欢迎关注,欢迎大佬指出问题或者提供更加智能化的方案。
|