【详细教程】基于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://xiahunao.cn/news/3031997.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

答辩PPT设计无从下手?哪些AI工具可以提供帮助

本科毕业论文答辩PPT该怎么做? 在我原本的认知里面,答辩PPT是要包含论文各个章节的,在答辩时需要方方面面都讲到的,什么摘要、文献综述、实证分析、研究结果样样不落。但是,这大错特错! 答辩PPT环节时长…

luceda ipkiss教程 70:合并GDS版图

通过代码拼版: 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3class Design1(i3.GDSCell):def _default_filename(self):return "Ring_Test.gds"def _default_name(self):return "Design1"class Des…

大数据基础工程技术团队4篇论文入选ICLR,ICDE,WWW

近日,由阿里云计算平台大数据基础工程技术团队主导的四篇时间序列相关论文分别被国际顶会ICLR2024、ICDE2024和WWW2024接收。 论文成果是阿里云与华东师范大学、浙江大学、南京大学等高校共同研发,涉及时间序列与智能运维结合的多个应用场景。包括基于P…

recycleview和banner新闻列表轮播图

说明:最近碰到一个需求,弄一个新闻列表和轮播图,在首页显示,并且需要json解析,图片下载,轮播图和新闻列表一起滑动 ui效果图: 文件说明: step1:引用依赖包 图片下载 json解析 轮播…

Java入门基础学习笔记4——开发Helloworld入门程序

Java程序开发的三个步骤: 1)编写代码 2)编译代码 3)运行代码 注意事项: 第一个java程序建议使用记事本来编写。 建议代码文件名全英文、首字母大写、满足驼峰模式,源代码文件的后缀必须是.java 注意&a…

企业破产重整:从“至暗时刻”到“涅槃重生”

今天我们不谈星辰大海,而是要潜入商业世界的深海区,探索那些濒临绝境的企业是如何借助“破产重整”的神秘力量,实现惊天大逆转的! 一、破产重整,到底是个啥? 想象一下,企业像是一位远航的船长…

数据增强,迁移学习,Resnet分类实战

目录 1. 数据增强(Data Augmentation) 2. 迁移学习 3. 模型保存 4. 102种类花分类实战 1. 数据集 2.导入包 3. 数据读取与预处理操作 4. Datasets制作输入数据 5.将标签的名字读出 6.展示原始数据 7.加载models中提供的模型 8.初始化…

从静态PPT到智能演讲——人工智能在演示文稿中的应用

1.概述 在这个信息过载的时代,能够吸引并持续吸引观众的注意力无疑成为了一项艰巨的任务。公众演讲领域正经历着一场由人工智能(AI)引领的革命。AI不仅在制作引人入胜的内容方面发挥作用,而且在分析演讲的传递方式上也起着关键作…

【C++】 类的6个默认成员函数

目录 1. 类的6个默认成员函数 一.构造函数 1.基本概念 2 特性 注意:C11 中针对内置类型成员不初始化的缺陷,又打了补丁, 3.构造函数详解 3.1构造函数体赋值 3.2 初始化列表 3.3 explicit关键字 二.析构函数 1 概念 2 特性 两个栈实…

Vue路由拆分

1.在src下建立router&#xff0c;在router中建立文件index 2.将main.js中部分内容复制 App <template> <div><a href"#/friend">朋友</a><br><a href"#/info">信息</a><br><a href"#/music&quo…

Photoshop中图层的应用

Photoshop中图层的应用 前言Photoshop中的图层面板Photoshop中图层的基本操作新建图层复制/剪切图层链接图层修改图层名称及颜色背景图层与普通图层栅格化图层图层的对齐与分布图层的合并 前言 图层在Photoshop中就像一层一层的透明纸&#xff0c;可以透过图层的透明区域看到下…

动手学深度学习16 Pytorch神经网络基础

动手学深度学习16 Pytorch神经网络基础 1. 模型构造2. 参数管理1. state_dict()2. normal_() zeros_()3. xavier初始化共享参数的好处 3. 自定义层4. 读写文件net.eval() 评估模式 QA 1. 模型构造 定义隐藏层–模型结构定义前向函数–模型结构的调用 import torch from torch…

万村乐数字乡村综合服务系统如何助力农民收入的腾飞

作为行业领先的数字乡村综合服务系统——“万村乐”&#xff0c;其核心便是基于互联网乡村和物联网乡村的强大信息基石之上。通过幸福民生服务、高效政务服务以及规范的党务服务这三条主线&#xff0c;以手机端平台为承载&#xff0c;借助事件反馈、精准种养数据、精细人员网格…

【Java】/*方法的使用-快速总结*/

目录 一、什么是方法 二、方法的定义 三、实参和形参的关系 四、方法重载 五、方法签名 一、什么是方法 Java中的方法可以理解为C语言中的函数&#xff0c;只是换了个名称而已。 二、方法的定义 1. 语法格式&#xff1a; public static 返回类型 方法名 (形参列表) { //方…

AI领域最伟大的论文检索网站

&#x1f4d1; 苏剑林&#xff08;Jianlin Su&#xff09;开发的“Cool Papers”网站旨在通过沉浸式体验提升科研工作者浏览论文的效率和乐趣。这个平台的核心优势在于利用Kimi的智能回答功能&#xff0c;帮助用户快速了解论文的常见问题&#xff08;FAQ&#xff09;&#xff0…

定了,2024年天门中级职称报名开始了

关于今年天门中级职称报名各类相关事宜&#xff0c;我们一起来看看 一、报名时间和地址 1.报名时间&#xff1a;2024年5月10日至5月22日&#xff0c;并由主管部门或用人单位将报名表提交给人力资源部&#xff08;注意不要错过时间了&#xff09; 水测准考证领取时间为正式考试…

卷积模型的剪枝、蒸馏---蒸馏篇--NST特征蒸馏(以deeplabv3+为例)

本文使用NST特征蒸馏实现deeplabv3+模型对剪枝后模型的蒸馏过程; 一、NST特征蒸馏简介 下面是两张叠加了热力图(heat map)的图片,从图中很容易看出这两个神经元具有很强的选择性:左图的神经元对猴子的脸部非常敏感,右侧的神经元对字符非常敏感。这种激活实际上意味着神经…

自回归模型的优缺点及改进方向

在学术界和人工智能产业中&#xff0c;关于自回归模型的演进与应用一直是一个引发深入讨论和多方观点交锋的热门议题。尤其是Yann LeCun&#xff0c;这位享誉全球的AI领域学者、图灵奖的获得者&#xff0c;以及被誉为人工智能领域的三大巨擘之一&#xff0c;他对于自回归模型持…

笔记2:torch搭建VGG网络代码详细解释

VGG网络结构 VGG网络&#xff08;Visual Geometry Group Network&#xff09;是一种经典的深度学习卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;由牛津大学的视觉几何组&#xff08;Visual Geometry Group&#xff09;在2014年提出。VGG网络在ImageNet挑战赛2014…

软件开发项目实施方案-精华资料(Word原件)

依据项目建设要求&#xff0c;对平台进行整体规划设计更新维护&#xff0c;对系统运行的安全性、可靠性、易用性以及稳健性进行全新设计&#xff0c;并将所有的应用系统进行部署实施和软件使用培训以及技术支持。 根据施工总进度规划&#xff0c;编制本项目施工进度计划表。依据…