pyecharts官网使用说明书---保姆级手把手教你画图版

pyecharts经过几次升级后,官网越来越难读懂(规范)了,每次去pyecharts官网找参数,都要了我这个小菜鸡半条命,各个参数含义清晰易懂,就是不知道要放在哪部分里面使用。。。在经过无数次的磨练之后,终于总结出来画图的规律,于是便有了这篇文章。
现在让我们在来拨茧抽丝,接开pyecharts画图的奥秘。
首先放上pyecharts官网:https://pyecharts.org/#/zh-cn/intro

1.画图脚本结构

如果画好一个理想中图表,需要以下四个部分的参数进行整合:
图表函数+数据+全局配置(标题、图纸大小、横纵坐标、工具栏等)+系列配置(图表线条、填充颜色、标签等)

但是如果你要画一个简单的图表,仅用图表函数+数据两部分即可搞定:
例如简单的柱形图:

from pyecharts.charts import Bar
Bar()#先写柱状图的基础函数
.add_xaxis(xaxis_data = ["A","B","C"])#add横轴的数据
.add_yaxis(series_name="趋势",yaxis_data = [1,2,3])#add纵轴的数据
.render_notebook()#显示图表

在这里插入图片描述
画水滴图:

from pyecharts.charts import Liquid
c = Liquid().add(series_name='水球图',data = [0.6])
c.render_notebook()

在这里插入图片描述
只要你在官网中找到可配置的图形函数,在图形函数后加上add(数据),即可画出相应的图形。
看到这里你可能会有一个疑问,如何知道各个参数后面是接字典,还是列表,还是字符串?为什么有的图形函数后接的是add,有的是add_xaxis和add_yaxis?如何更换图表颜色,设置图表大小,添加图表标题?下面就来解答一下这些问题。

2.参数的类型

先来解答一下第一个问题,如何确定各个参数所对应数据的类型?回答照官网的指示来设置。
虽然pyecharts官网的参数所代表的含义及类型都写的很明确,但是经常会有参数类型不知如何确认参数不知如何放置的情况。故先说一下参数的类型如何确认。
在官网中,每个参数后面都会标注出所对应的数据类型,下面就来解释一下这些数据类型都是什么含义:

  • str:字符串
    (width: str )➡(width = “900px”)
  • int:整数
    (item_gap: int)➡(item_gap = 10)
  • Numeric:数据
    (animation_threshold: Numeric)➡(animation_threshold = 2000)
  • bool:布尔值
    (animation: bool)➡(animation = True)
  • Sequence:列表
    (xaxis_data: Sequence)➡(xaxis_data = [1, 2, 3])
  • Optional:当option出现时,只关注optional后的【】中的类型即可
    (title_target: Optional[str])➡(title_target = “self”)
    (tool_box: Optional[Sequence])➡(tool_box = [“rect”])
  • Union:当Union出现的时候,可根据实际情况选择【】中的一种类型即可
    (min_: Union[int, float])➡(min_ = 0)#此为类型选为int
    ➡(min_ = 0.2)#此为类型选为float
    (itemstyle_opts: Union[opts.ItemStyleOpts, dict, None])➡(itemstyle_opts = opts.ItemStyleOpts() )
    #也可以是将opts.ItemStyleOpts()中参数对应的数据用字典的形式表示出来➡({itemstyle_opts = {“color” : “red”})#写成字典的形式要注意两点1、参数要加引号2、参数后接冒号(:)而非等号

3.参数与结构相结合

之前说过pyecharts主要分为4块:图表函数、add数据、全局配置、系列配置。

3.1图表函数

在这四块构成中,首先要确定的就是图表函数,图表函数很简单,你需要画什么图形,就在官网链接上找到相应的图表函数,from pyecharts.charts import 相应的图表函数,即可使用。
官网基本图表类型链接:https://pyecharts.org/#/zh-cn/basic_charts

#以下分别调用柱状图、折线图、饼图、地图
from pyecharts.charts import Bar, Line, Pie, Map

ps:注意一下官网上函数的所属关系
在这里插入图片描述
看日历图这个函数Calendar包含在pyecharts.charts中的,所以调用时应from pyecharts.charts import Calendar

3.2add数据

确认好我们要画的图形函数后,下一步就是在图形中添加相应的数据,而这个数据就是借用add函数来添加。
首先我们还是来看一下这个函数的所属关系:

1、柱状图
常识来看柱状图是需要有x轴和y轴两种数据的。从下图官网截图可以看出函数Bar后所附的为add_yaxis函数,既然有y轴的,也就意味着有对应的x轴add_xaxis
在这里插入图片描述
官网上并未标注出add_xaxis这各部分,但是当你看到一个函数后出现了add_yaxis,也就意味着一定要写add_xaxis这部分。

Bar()#先写柱状图的基础函数
.add_xaxis(xaxis_data = ["A","B","C"])#add横轴的数据
.add_yaxis(series_name="趋势",yaxis_data = [1,2,3])#add纵轴的数据

2、水球图
有一种图,不是直角坐标系图,不需要同时存在x、y轴两种数据,只有单独数据就可以了,如下面的水球图。
在这里插入图片描述
在水球图Liquid函数后面接的是add,则使用的时候Liquid().add() 即可。

3.3全局配置参数

在我们可以用函数+add函数来画出一个简单的图形,但是默认配置项很多时候并不能满足我们的需求,这个时候就需要配置参数的帮助,首先我们来说一下全局配置参数。
这个全局配置参数是指官网里面的配置项-全局配置项的参数。
老规矩,先上链接https://pyecharts.org/#/zh-cn/global_options
按照官网的指示,全局配置函数的调用如下

from pyecharts.charts import Liquid
from pyecharts import options as opts
Liquid().add(series_name='水球图',data = [0.6]).set_global_opts(此处应有相应参数)
#设置全局配置项时,在图形函数后调用.set_global_options()即可

下面来说一下set_global_opts()中都可以设置哪些参数:

#以下是来自函数的官方定义
def set_global_opts(
    self,
    title_opts: types.Title = opts.TitleOpts(),
    legend_opts: types.Legend = opts.LegendOpts(),
    tooltip_opts: types.Tooltip = None,
    toolbox_opts: types.Toolbox = None,
    brush_opts: types.Brush = None,
    xaxis_opts: types.Axis = None,
    yaxis_opts: types.Axis = None,
    visualmap_opts: types.VisualMap = None,
    datazoom_opts: types.DataZoom = None,
    graphic_opts: types.Graphic = None,
    axispointer_opts: types.AxisPointer = None,
):

建议函数定义+官网参数详解联合使用,效果翻倍。
比如说我想对工具栏进行相应的设置,首先找到工具栏设置参数:ToolboxOpts,具体代码如下。
设置工具栏的同时对标题部分(TitleOpts)也进行命名:

from pyecharts.charts import Bar
from pyecharts import options as opts
Bar()
.add_xaxis(xaxis_data = ["A","B","C"])#x轴数据
.add_yaxis(series_name="趋势",yaxis_data = [1,2,3])#y轴数据
.set_global_opts(toolbox_opts = opts.ToolboxOpts(orient = 'vertical'),#工具栏设置
		 title_opts = opts.TitleOpts(title = "我是标题啊")

需要注意的点:
在官网的全局配置项中,你会发现有一个InitOpts:初始化配置项,这个初始化配置项又不存在于函数set_global_opts中,那这个初始配置项该如何配置呢?这个初始化配置项是在图表函数中进行设置的,还是拿柱状图举例:
在这里插入图片描述
若设置柱状图的长和宽:

from pyecharts.charts import Bar
from pyecharts import options as opts
Bar(init_opts=opts.InitOpts(width='720px',height='320px'))#在图表函数中设置初始化配置项
.add_xaxis(xaxis_data = ["A","B","C"])#x轴数据
.add_yaxis(series_name="趋势",yaxis_data = [1,2,3])#y轴数据
.render_notebook()#展示图表

3.4系列配置参数

这个系列配置参数主要包含一些图表内部比较细致的配置,线条颜色、文字样式等等。
系列配置项函数:set_series_opts
首先还是系列配置部分官网链接:https://pyecharts.org/#/zh-cn/series_options
接下来是set_series_opts函数的参数构成:

def set_series_opts(
    self,
    label_opts: types.Label = None,
    linestyle_opts: types.LineStyle = None,
    splitline_opts: types.SplitLine = None,
    areastyle_opts: types.AreaStyle = None,
    axisline_opts: types.AxisLine = None,
    markpoint_opts: types.MarkPoint = None,
    markline_opts: types.MarkLine = None,
    markarea_opts: types.MarkArea = None,
    effect_opts: types.Effect = opts.EffectOpts(),
    tooltip_opts: types.Tooltip = None,
    itemstyle_opts: types.ItemStyle = None,
    **kwargs,
):

使用方法同全局设置一样,先找到要设置的参数对应的函数,再一次按照参数类型进行配置即可。
如:我想将之前画的柱状图的颜色改成橘色,首先找到颜色对应的是参数:itemstyle_opts中的color,那代码如下:

Bar(init_opts=opts.InitOpts(width='720px',height='320px'))
.add_xaxis(xaxis_data = ["A","B","C"])
.add_yaxis(series_name="趋势",yaxis_data = [1,2,3])
.set_series_opts(itemstyle_opts = opts.ItemStyleOpts(color="orange")).render_notebook()#在系列配置项中将柱状图颜色定义为橘色

在这里插入图片描述

4.总结

pyecharts画图核心部分就是以上四个部分,只要按部就班,找到需要设置的函数所处位置,确定要设置的参数类型,按照顺序一点点堆叠起来,画图就不会有问题了。

5.举个例子

就以2020年的新冠疫情图为例,如果我想做一个有时间趋势的疫情图该如何设置呢?
首先要确定图表函数:中国地图
其次如何加入时间轴:介入组合图表时间线轮播多图Timeline

#输入2020-01-28,2020-02-02两天的新冠确诊人数数据
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map,Timeline 
data = pd.DataFrame([['2020-01-28', '湖北', 272.0],['2020-01-28', '浙江', 299.0],['2020-01-28', '广东', 229.0],['2020-01-28', '河南', 27.0],['2020-01-28', '湖南', 222.0],['2020-01-28', '江西', 72.0],['2020-01-28', '安徽', 157.0],['2020-01-28', '重庆', 147.0], ['2020-01-28', '山东', 121.0], ['2020-01-28', '四川', 18.0], ['2020-01-28', '江苏', 1.0], ['2020-01-28', '上海', 8.0], ['2020-01-28', '北京', 91.0], ['2020-01-28', '福建', 82.0], ['2020-01-28', '广西', 58.0], ['2020-01-28', '陕西', 46.0], ['2020-01-28', '河北', 48.0], ['2020-01-28', '云南', 51.0], ['2020-01-28', '黑龙江', 37.0], ['2020-01-28', '海南', 43.0], ['2020-01-28', '辽宁', 36.0], ['2020-01-28', '山西', 2.0], ['2020-01-28', '天津', 24.0], ['2020-01-28', '甘肃', 24.0], ['2020-01-28', '宁夏', 12.0], ['2020-01-28', '内蒙古', 15.0], ['2020-01-28', '新疆', 13.0], ['2020-01-28', '贵州', 9.0], ['2020-01-28', '吉林', 9.0], ['2020-01-28', '香港', 8.0], ['2020-01-28', '台湾', 8.0], ['2020-01-28', '青海', 6.0], ['2020-01-28', '澳门', 7.0], ['2020-01-28', '西藏', np.nan], ['2020-02-02', '湖北', 11177.0], ['2020-02-02', '浙江', 724.0], ['2020-02-02', '广东', 683.0], ['2020-02-02', '河南', 566.0], ['2020-02-02', '湖南', 521.0], ['2020-02-02', '江西', 391.0], ['2020-02-02', '安徽', 48.0], ['2020-02-02', '重庆', 3.0], ['2020-02-02', '山东', 246.0], ['2020-02-02', '四川', 254.0], ['2020-02-02', '江苏', 271.0], ['2020-02-02', '上海', 193.0], ['2020-02-02', '北京', 191.0], ['2020-02-02', '福建', 159.0], ['2020-02-02', '广西', 127.0], ['2020-02-02', '陕西', 128.0], ['2020-02-02', '河北', 113.0], ['2020-02-02', '云南', 15.0], ['2020-02-02', '黑龙江', 118.0], ['2020-02-02', '海南', 71.0], ['2020-02-02', '辽宁', 7.0], ['2020-02-02', '山西', 6.0], ['2020-02-02', '天津', 54.0], ['2020-02-02', '甘肃', 51.0], ['2020-02-02', '宁夏', 288.0], ['2020-02-02', '内蒙古', 27.0], ['2020-02-02', '新疆', 24.0], ['2020-02-02', '贵州', 46.0], ['2020-02-02', '吉林', 31.0], ['2020-02-02', '香港', 15.0], ['2020-02-02', '台湾', 1.0], ['2020-02-02', '青海', 13.0], ['2020-02-02', '澳门', 8.0], ['2020-02-02', '西藏', 1.0]],columns=["日期","地区","确诊病例"])
#定义一个timeline和map的组合图
def timeline_map(data):
    tl = Timeline().add_schema(play_interval =300,height=40,is_rewind_play=True,is_loop_play = True,is_auto_play=True)#设置播放速度、是否循环播放等参数
    for day in sorted(list(set(data["日期"].tolist()))):
        x =data[data["日期"]==day]['地区'].values.tolist()#选取指定日期地区数据
        y=data[data["日期"]==day]['确诊病例'].values.tolist() #选取指定日期确诊数据
        map_shape = (
            Map()
            .add("确诊病例",[list(z) for z in zip(x, y)])#打包输入地区及对应确诊数据
            .set_series_opts(label_opts=opts.LabelOpts("{b}"))#配置系列参数,{b}为显示地区数据
            .set_global_opts(
                title_opts=opts.TitleOpts(title="举个例子"),#全局参数中设置标题
                visualmap_opts=opts.VisualMapOpts(max_=1000,#设置映射配置项的最大值
                                                  is_piecewise=True,#设置是否为分段显示
                                                  pos_top = "60%",#映射配置项距图片上部的距离
                                                  pieces=[
                                                        {"min": 1000, "label": '>1000人', "color": "#FF0000"}, # 分段指定颜色及名称
                                                        {"min": 500, "max": 1000, "label": '500-1000人', "color": "#FF3333"},
                                                        {"min": 100, "max": 499, "label": '100-499人', "color": "#FF6666"},
                                                        {"min": 10, "max": 99, "label": '10-99人', "color": "#FF9999"},
                                                        {"min": 1, "max": 9, "label": '1-9人', "color": "#FFCCCC"}])
        ))
        tl.add(map_shape, "{}".format(day))#将不同日期的数据加入到timeline中
    return tl
timeline_map(data).render_notebook()

结果如下图所示。
在这里插入图片描述
本文如果问题,欢迎指正。

  • 8
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
感谢您的提问!以下是手把手您搭建属于自己的PyQt5-YOLOv5目标检测平台的保姆程: 1. 安装Anaconda 首先,您需要下载并安装Anaconda,Anaconda是一个 Python 数据科学平台,包含了许多常用的数据科学包,如Numpy、Pandas等。 2. 创建一个虚拟环境 在安装了Anaconda之后,您需要创建一个虚拟环境,以便隔离开发环境和系统环境。您可以在命令行中输入以下命令来创建一个名为yolov5的虚拟环境: ``` conda create -n yolov5 python=3.8 ``` 其中,“yolov5”是您的虚拟环境的名称,您可以根据自己的需要进行更改。 3. 激活虚拟环境 创建完虚拟环境之后,您需要激活它,以便在环境中进行开发。在命令行中输入以下命令来激活yolov5环境: ``` conda activate yolov5 ``` 4. 安装PyQt5和YOLOv5 在激活了虚拟环境之后,您需要安装PyQt5和YOLOv5。您可以在命令行中输入以下命令来安装它们: ``` pip install PyQt5 pip install yolov5 ``` 5. 创建PyQt5界面 在安装了PyQt5之后,您可以使用Qt Designer创建一个PyQt5界面。Qt Designer是一个可视化的界面设计工具,可以让您轻松地创建PyQt5界面。 6. 使用YOLOv5进行目标检测 在安装了YOLOv5之后,您可以使用它进行目标检测。您可以在Python脚本中使用以下代码: ```python import torch from yolov5.models.experimental import attempt_load from yolov5.utils.torch_utils import select_device device = select_device('cpu') model = attempt_load('yolov5s.pt', map_location=device) img = torch.zeros((1, 3, 640, 640), device=device) pred = model(img) print(pred) ``` 其中,“yolov5s.pt”是YOLOv5的预训练模型,您可以在YOLOv5的GitHub页面上下载它。 7. 将PyQt5界面与YOLOv5集成 最后,您需要将PyQt5界面与YOLOv5集成起来,以便您可以在界面上使用YOLOv5进行目标检测。您可以在Python脚本中使用以下代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtGui import QPixmap from yolov5.models.experimental import attempt_load from yolov5.utils.torch_utils import select_device class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('PyQt5-YOLOv5目标检测平台') self.setGeometry(100, 100, 800, 600) self.label = QLabel(self) self.label.setGeometry(50, 50, 640, 480) self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec_()) ``` 这段代码创建了一个名为“PyQt5-YOLOv5目标检测平台”的窗口,并在窗口上添加了一个标签。您可以使用这个标签来显示检测到的目标。 以上就是手把手您搭建属于自己的PyQt5-YOLOv5目标检测平台的保姆程。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值