【详细教程】基于pyEchart的封装(附代码)

 

目  录

一、项目结构

二、文件封装

2.1echart.py

2.2pyechartMock.py

三、结果

3.1柱状图

3.2折线图

3.3饼状图


最近在学习pyechart,老师要我们画几个简单的图,比如折线图,柱状图,饼状图,我这里在参考pyechart文档之后,自己封装了一下,可能依旧有点丑陋,也欢迎各位老爷们指正!

参考文档:简介 - pyecharts - A Python Echarts Plotting Library built with love.

环境说明:python 3.7.0  使用的为V2版本的pyechart

一、项目结构

二、文件封装

请注意替换实际的项目相对路径

2.1echart.py

from pyecharts.charts import Bar,Line,Pie  # 画条形图,折线图,饼图
from pyecharts import options as op
# 下载图片的工具函数
from snapshot_selenium import snapshot
# 生成图片的函数
from pyecharts.render import make_snapshot
# 饼状图需要模拟数据
from pyecharts.faker import Faker
# 导入mock数据
from 实验报告文档.实验代码.lab4.myFun.data.pyechartMock import *# 获取图片 传入bar对象和 文件路径
def generatePic(bar,filePath):make_snapshot(snapshot,bar.render(),filePath)# 画柱状图
# 1.传入一个横坐标,
# 2.传入一个包含y轴数据的字典,里面包含多个种类的数据
# 3.传入一个标题对象 里面包含标题和副标题
# 4.html生成的路径
def drawBar(xLabelList,yLabelDict,titleDict,targetPath):bar = Bar()bar.add_xaxis(xLabelList)for k,v in yLabelDict.items():bar.add_yaxis(k,v)bar.set_global_opts(title_opts=op.TitleOpts(title=titleDict['title'],subtitle=titleDict['subTitle']))bar.render(targetPath) # 渲染 生成html# generatePic(bar,filePath) # 要画很久 性能不行!!!# 画折线图
# 1.传入一个横坐标内容列表  week_name_list
# 2.传入一个数据字典 dataDict  里面包含多个对象 每个对象包含一个name 一个itemYLabelList
# 3.传入title对象
# 4.传入是否显示工具选项
def drawLine(xLabelList,yLabelDict,titleDict,targetPath,showTools):line = Line()line.add_xaxis(xaxis_data=xLabelList)for k,v in yLabelDict.items():line.add_yaxis(series_name=k,y_axis=v,markpoint_opts=op.MarkPointOpts(data=[# op.MarkPointItem(type_="max", name="最大值"), # 标记最大值点# op.MarkPointItem(type_="min", name="最小值"), # 标记最小值点]),markline_opts=op.MarkLineOpts(data=[# op.MarkLineItem(symbol="circle", type_="max", name="最高点"),  # 标记最高值线# op.MarkLineItem(type_="average", name="平均值"),               # 标记均值线# op.MarkLineItem(symbol="circle", type_="min", name="最低点"),  # 标记最低值线]),)line.set_global_opts(title_opts=op.TitleOpts(title=titleDict['title'], subtitle=titleDict['subTitle']),tooltip_opts=op.TooltipOpts(trigger="axis"),toolbox_opts=op.ToolboxOpts(is_show=showTools), # 这里设置是否显示下载等工具xaxis_opts=op.AxisOpts(type_="category", boundary_gap=False),)line.render(targetPath)# 画饼状图
# 1.一个名字列表
# 2.一个值列表
# 3.一个颜色列表
# 4.一个文件生成路径
# 5.一个标题对象
def drawPine(nameList,valueList,colorList,titleDict,targetPath):pie = Pie()pie.add("",[list(z) for z in zip(nameList,valueList)])pie.set_colors(colorList)pie.set_global_opts(title_opts=op.TitleOpts(title=titleDict['title']))pie.set_series_opts(label_opts=op.LabelOpts(formatter="{b}: {c}"))pie.render(targetPath)# 因为是给./data/pyechartMock调用的,所以写../ (x) 这种想法是错误的!!!
# import 就相当于将函数定义在当前文件了!!!
barFilePath = r'./pic/bar.html'
lineFilePath = r'./pic/line.html'
pieFilePath = r'./pic/pie.html'# pyechart unit testing
if __name__ == '__main__':print("主函数运行成功!")# 测试bar图像drawBar(BarList,BarDict,BarTitle,barFilePath)drawLine(LineList,LineDict,LineTitle,lineFilePath,showTools=True)drawPine(PieNameList,PieValueList,PieColorList,PieTitle,pieFilePath)# drawPine(pieFilePath)

2.2pyechartMock.py

import randomLISTNUM = 10    # x轴种类
DICTNUM = 5     # y轴种类
BarList = ['物品'+str(i) for i in range(LISTNUM)]
BarDict = dict()BarTitle = {'title':'这是柱状图的主标题','subTitle': '这是柱状图的副标题',
}
# 0 -> A
def numToAlph(num):return chr(num+65)
# A -> 0
def alphToNum(ch):return ord(ch)-65for i in range(DICTNUM):BarDict['商家'+str(numToAlph(i))] = [random.randint(10,100) for i in range(LISTNUM)]################################################
LineList = ['星期'+str(i) for i in range(LISTNUM)]
LineDict = dict()LineTitle = {'title':"这是折线图的主标题",'subTitle': '这是折线图的副标题',
}for i in range(DICTNUM):LineDict["种类"+str(numToAlph(i))] = [random.randint(10,100) for i in range(LISTNUM)]################################################
PieNameList = ['名字'+str(i) for i in range(LISTNUM)]
PieValueList = [random.randint(10,90)//10 for i in range(LISTNUM)]
PieColorList = ["blue", "green", "yellow", "red", "pink", "orange", "purple"]PieTitle = {'title':"这是饼状图的主标题",'subTitle': '这是饼状图的副标题',
}

三、结果

3.1柱状图

3.2折线图

3.3饼状图

这样,当你想用啥的时候,也可以自己mock模拟一些数据,丢到这个函数里面,非常方便! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689382.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】顺序表与链表的差异

顺序表和链表都是线性表,它们有着相似的部分,但是同时也有着很大的差异。 存储空间上的差异: 对于插入上的不同点,顺序表在空间不够时需要扩容,而如果在使用realloc函数去扩容,会有原地扩容和异地扩容两种情…

【35分钟掌握金融风控策略21】贷前额度策略

目录 贷前策略审批流程和统一额度管理 贷前策略审批流程 统一额度管理 预授信策略 贷前策略审批流程和统一额度管理 贷前包含了多个风控场景,这些风控场景的策略在执行时是否存在先后顺序呢?在贷前,除上述主要的风控场景,还有…

return语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 return语句 一、return语句后面跟表达式二、return无返回三、return返回的值和函数返回类型不一致四、return语句执行后,后方仍然存在代码五、存在分支语句,需考虑…

[单机]完美国际_V155_GM工具_VM虚拟机

[端游] 完美国际单机版V155一键端PC电脑网络游戏完美世界幻海凌云家园 本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是…

视频剪辑达人分享:一键批量置入随机封面,创意无限

在数字化媒体飞速发展的今天,视频内容已经成为我们表达创意、分享故事、传递信息的主要方式之一。而在视频制作过程中,封面作为视频的“脸面”,往往决定了观众是否愿意点击观看。因此,为视频选择合适的封面变得至关重要。 在大量…

【VTKExamples::Rendering】第三期 (镜面照明系数)TestSpecularSpheres

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestSpecularSpheres,介绍镜面照明系数对Actor颜色的影响,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的…

鸿蒙内核源码分析(远程登录篇) | 内核如何接待远方的客人

什么是远程登录? 每个人都有上门做客的经历,抖音也一直在教我们做人,做客不要空手去,总得带点东西,而对中国人你就不能送钟,不能送梨,最好也别送鞋,因他们与 终 离 邪 谐音,犯忌讳. 这是人情世故,叫礼仪,是中华文明圈的共识,是相互交流信任的基础. 那互联网圈有没有这种共识呢…

最新ChatGPT中文系统网站源码+系统部署+支持AI对话、AI绘画、AI音乐等大模型

一、系统介绍 本文将介绍最新的ChatGPT中文版AI创作系统——星河易创AI系统,该系统基于ChatGPT的核心技术,融合了自然语言问答、绘画、音乐等创作功能,并兼容官方GPT全模型。该系统提供多样化的应用,包括GPTs的多场景应用、实时G…

GAME101-Lecture06学习

前言 上节课主要讲的是三角形的光栅化。重要的思想是要利用像素的中心对三角形可见性的函数进行采样。 这节课主要就是反走样。 课程链接:Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)_哔哩哔哩_bilibili 反走样引入 ​ 通过采样,得到…

论文研读 An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale

完整翻译 《An Image is Worth 16x16 Words》完整版翻译_an image is worth 16*16words-CSDN博客 大神讲解 Vision Transformer详解-CSDN博客 视频讲解 11.1 Vision Transformer(vit)网络详解_哔哩哔哩_bilibili 学习整理 简要概述:Vision Transformer&#xff…

DDS块集是如何工作的?

DDS块集使你能够在Simulink中创建DDS应用程序。如果你有一个在Simulink中建模的应用程序,希望能够使用DDS,则可以使用DDS块集轻松连接到DDS中间件平台。 DDS块集将DDS概念引入Simulink环境,在Simulink应用程序中对这些概念进行建模&#xff0…

类和对象中篇

类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数 ①初始化和清理:构造函数和析构函数 ②拷贝复制&#x…