Pyecharts绘图教程(2)—— 绘制多种折线图(Line)参数说明+代码实战

news2024/11/25 12:42:18

文章目录

  • 🎯 1 简介
  • 🎯 2 图表配置项
    • 2.1 导入模块
    • 2.2 数据配置项
    • 2.3 全局配置项
  • 🎯 3 代码实战
    • 3.1 基础折线
    • 3.2 平滑曲线(is_smooth)
    • 3.3 阶梯折线(is_step)
    • 3.4 空值过渡(is_connect_nones)
    • 3.5 线条颜色(color)
    • 3.6 标记点配置项(markpoint_opts)
    • 3.7 标记的图形(symbol)
    • 3.8 标记线配置项(markline_opts)
    • 3.9 线样式配置项(linestyle_opts)
    • 3.10 填充区域配置项(areastyle_opts)
    • 3.11 标记区域(markarea_opts)
  • 🎯🎯🎯 更多可视化项目源码+数据

大家好,我是 👉【Python当打之年(点击跳转)】

🔥🔥🔥 本期是《Pyecharts绘图教程》的第 2 该系列从0到1不断进阶深入,专门 针对零基础和需要进阶提升的小伙伴,逐步掌握使用Pyecharts库进行数据可视化的技能 ,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。

🎯 1 简介

折线图是一种常用的可视化图表,可以清晰地展示数据随时间或其他连续变量的变化趋势 ,通过连接数据点,可以观察到数据的上升、下降、波动等变化趋势,帮助人们更直观地理解数据的变化规律。

🎯 2 图表配置项

2.1 导入模块

from pyecharts.charts import Line
import pyecharts.options as opts

2.2 数据配置项

通过add_xaxisadd_yaxis函数添加横坐标、纵坐标数据

def add_xaxis(
	# 系列数据
	xaxis_data: types.Sequence[types.Union[opts.LineItem, dict]]
)
def add_yaxis(
    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
    series_name: str,

    # 系列数据
    y_axis: types.Sequence[types.Union[opts.LineItem, dict]],

    # 是否选中图例
    is_selected: bool = True,

    # 是否连接空数据,空数据使用 `None` 填充
    is_connect_nones: bool = False,

    # 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
    xaxis_index: Optional[Numeric] = None,

    # 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
    yaxis_index: Optional[Numeric] = None,

    # 系列 label 颜色
    color: Optional[str] = None,

    # 是否显示 symbol, 如果 false 则只有在 tooltip hover 的时候显示。
    is_symbol_show: bool = True,

    # 标记的图形。
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 
    # 'diamond', 'pin', 'arrow', 'none'
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。
    symbol: Optional[str] = None,

    # 标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,
    # 例如 [20, 10] 表示标记宽为 20,高为 10。
    symbol_size: Union[Numeric, Sequence] = 4,

    # 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
    stack: Optional[str] = None,

    # 是否平滑曲线
    is_smooth: bool = False,

    # 是否裁剪超出坐标系部分的图形。折线图:裁掉所有超出坐标系的折线部分,拐点图形的逻辑按照散点图处理
    is_clip: bool = True,

    # 是否显示成阶梯图
    is_step: bool = False,

    # 是否开启 hover 在拐点标志上的提示动画效果。
    is_hover_animation: bool = True,

    # 折线图所有图形的 zlevel 值。
    # zlevel用于 Canvas 分层,不同zlevel值的图形会放置在不同的 Canvas 中,Canvas 分层是一种常见的优化手段。
    # zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面。
    z_level: types.Numeric = 0,

    # 折线图组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖。
    # z 相比 zlevel 优先级更低,而且不会创建新的 Canvas。
    z: types.Numeric = 0,

    # 折线图在数据量远大于像素点时候的降采样策略,开启后可以有效的优化图表的绘制效率,默认关闭,也就是全部绘制不过滤数据点。
    # 可选:
    # 'lttb' 采用 Largest-Triangle-Three-Bucket 算法,可以最大程度保证采样后线条的趋势,形状和极值。
    # 'average' 取过滤点的平均值
    # 'max' 取过滤点的最大值
    # 'min' 取过滤点的最小值
    # 'sum' 取过滤点的和
    sampling: types.Optional[str] = None,

    # 使用 dimensions 定义 series.data 或者 dataset.source 的每个维度的信息。
    # 注意:如果使用了 dataset,那么可以在 dataset.source 的第一行/列中给出 dimension 名称。
    # 于是就不用在这里指定 dimension。
    # 但是,如果在这里指定了 dimensions,那么 ECharts 不再会自动从 dataset.source 的第一行/列中获取维度信息。
    dimensions: types.Union[types.Sequence, None] = None,

    # 当使用 dataset 时,seriesLayoutBy 指定了 dataset 中用行还是列对应到系列上,也就是说,系列“排布”到 dataset 的行还是列上。可取值:
    # 'column':默认,dataset 的列对应于系列,从而 dataset 中每一列是一个维度(dimension)。
    # 'row':dataset 的行对应于系列,从而 dataset 中每一行是一个维度(dimension)。
    series_layout_by: str = "column",

    # 标记点配置项,参考 `series_options.MarkPointOpts`
    markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,

    # 标记线配置项,参考 `series_options.MarkLineOpts`
    markline_opts: Union[opts.MarkLineOpts, dict, None] = None,

    # 提示框组件配置项,参考 `series_options.TooltipOpts`
    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

    # 标签配置项,参考 `series_options.LabelOpts`
    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),

    # 线样式配置项,参考 `series_options.LineStyleOpts`
    linestyle_opts: Union[opts.LineStyleOpts, dict] = opts.LineStyleOpts(),

    # 填充区域配置项,参考 `series_options.AreaStyleOpts`
    areastyle_opts: Union[opts.AreaStyleOpts, dict] = opts.AreaStyleOpts(),

    # 图元样式配置项,参考 `series_options.ItemStyleOpts`
    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,

    # 可以定义 data 的哪个维度被编码成什么。
    encode: types.Union[types.JSFunc, dict, None] = None,
)

2.3 全局配置项

通过set_global_opts 函数设置全局样式,包含标题、图例、工具、视觉、图形组件 、坐标轴配置等等,这个目前了解即可,后期会有专门的章节详细介绍每一项的配置:

def set_global_opts(
    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,
    ):

🎯 3 代码实战

3.1 基础折线

x_data = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
y_data1 = [120, 132, 101, 134, 90, 200, 180]
y_data2 = [i/2 for i in y_data1]
line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1)
    .add_yaxis("利润", y_data2)
    .set_global_opts(title_opts=opts.TitleOpts(title="示例1"))
)
line.render_notebook()

在这里插入图片描述

3.2 平滑曲线(is_smooth)

is_smooth 参数设置是否平滑显示:

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, is_smooth=True)
    .add_yaxis("利润", y_data2)
    .set_global_opts(title_opts=opts.TitleOpts(title="示例2"))
)
line.render_notebook()

在这里插入图片描述

3.3 阶梯折线(is_step)

is_step 参数设置是否阶梯显示:

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data, is_step=True)
    .add_yaxis("利润", y_data2)
    .set_global_opts(title_opts=opts.TitleOpts(title="示例3"))
)
line.render_notebook()

在这里插入图片描述

3.4 空值过渡(is_connect_nones)

is_connect_nones 参数设置是否连接空数据,空数据使用 None 填充:

y_data = [120, None, 101, 134, 90,None,180]
line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data, is_connect_nones=True)
    .add_yaxis("利润", y_data2)
    .set_global_opts(title_opts=opts.TitleOpts(title="示例4"))
)
line.render_notebook()

在这里插入图片描述

3.5 线条颜色(color)

color 参数设置线条颜色:

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue')
    .add_yaxis("利润", y_data2, color='green')
    .set_global_opts(title_opts=opts.TitleOpts(title="示例5"))
)
line.render_notebook()

在这里插入图片描述
注意!注意!注意!

颜色设置这里有一个经常出错的地方:代码里销量折线 color=‘blue’,利润折线 color=‘green’,但是图上两个颜色是相反的,为什么?小伙伴们可以思考一下,正常要求图像应该是下面这样的:

在这里插入图片描述

3.6 标记点配置项(markpoint_opts)

markpoint_opts 参数设置特殊标注点,type_ 取值: min 最大值、max 最大值、average 平均值。

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue',
               markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]),
              )
    .add_yaxis("利润", y_data2, color='green',
               markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]),
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="示例6"))
)
line.render_notebook()

在这里插入图片描述

3.7 标记的图形(symbol)

symbol 参数设置标记图形,echarts 提供的标记类型包括 :circle、rect、roundRect、triangle、diamond、pin、arrow、none,也可以通过 image://url 设置为图片,其中 URL 为图片的链接,或者 dataURI。

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue',symbol="diamond", symbol_size=20,
              )
    .add_yaxis("利润", y_data2, color='green',symbol="triangle", symbol_size=20,
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="示例7"))
)
line.render_notebook()

在这里插入图片描述

3.8 标记线配置项(markline_opts)

markline_opts 参数设置特殊标注线,type_ 取值: min 最大值、max 最大值、average 平均值。

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue',symbol="diamond", symbol_size=20,
               markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
              )
    .add_yaxis("利润", y_data2, color='green',symbol="triangle", symbol_size=20,
               markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="min")]),
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="示例8"))
)
line.render_notebook()

在这里插入图片描述

3.9 线样式配置项(linestyle_opts)

linestyle_opts 参数设置线条样式,width 线宽;opacity 图形透明度,支持从 0 到 1 的数字,为 0 时不绘制该图形;curve 线的弯曲度,0 表示完全不弯曲;type_ 线的类型,可选:solid、dashed、dotted

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue',symbol="diamond", symbol_size=20,
               markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
               linestyle_opts=opts.LineStyleOpts(color="green", width=2, type_="dotted"),
              )
    .add_yaxis("利润", y_data2, color='green',symbol="triangle", symbol_size=20,
               markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="min")]),
               linestyle_opts=opts.LineStyleOpts(color="blue", width=4, type_="dashed"),
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="示例9"))
)
line.render_notebook()

在这里插入图片描述

3.10 填充区域配置项(areastyle_opts)

areastyle_opts 参数设置填充区域,opacity 图形透明度,支持从 0 到 1 的数字,为 0 时不绘制该图形;color 填充的颜色

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue',symbol="diamond",symbol_size=20,
               areastyle_opts=opts.AreaStyleOpts(opacity=0.5)
              )
    .add_yaxis("利润", y_data2, color='green',symbol="triangle",symbol_size=20,
               areastyle_opts=opts.AreaStyleOpts(opacity=0.5)
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="示例10"))
)
line.render_notebook()

在这里插入图片描述

3.11 标记区域(markarea_opts)

markarea_opts 参数设置标记区域,data 标记区域数据; X 相对容器的屏幕 x 坐标,单位像素,支持百分比形式;Y 相对容器的屏幕 y 坐标,单位像素,支持百分比形式;itemstyle_opts 标记样式

line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis("销量", y_data1, color='blue',symbol="diamond",symbol_size=20,
              )
    .add_yaxis("利润", y_data2, color='green',symbol="triangle",symbol_size=20,
              )
    .set_series_opts(
        markarea_opts=opts.MarkAreaOpts(
            data=[
                opts.MarkAreaItem(name="工作日", x=("周一", "周五"),itemstyle_opts=opts.ItemStyleOpts(color='#EF5350',opacity=0.2)),
                opts.MarkAreaItem(name="休息日", x=("周六", "周日"),itemstyle_opts=opts.ItemStyleOpts(color='#26C6DA',opacity=0.2)),
            ]
        )
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="示例11"))
)
line.render_notebook()

在这里插入图片描述

🎯🎯🎯 更多可视化项目源码+数据

点击跳转:【全部可视化项目源码+数据】


以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享注明出处)让更多人知道。

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

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

相关文章

C++中->与.的区别

在类中 在 C 中,-> 和 . 都可以用于访问类的成员变量和成员函数。但它们在使用上有一些区别: 1. 对于指针类型的对象,必须使用 -> 来访问其成员;而对于非指针类型的对象,则需要使用 . 。 2. -> 运算符在实…

2023年淘宝天猫京东双11红包活动时间什么时候开始如何使用京东淘宝天猫双十一红包口令抢双11超级红包?

2023年京东双11抢红包时间是什么时候? 京东双11抢红包活动时间是从2023年10月23日20:00开始持续到11月11日23:59结束; 2023年京东双11抢红包口令是什么如何使用? 1、在2023年京东双11红包活动时间内,每天都可以打开京东APP&…

电商接口中API key 和 token 有什么区别?

API key 和 token 就有这种问题,它们都是作为一种身份验证机制。前几天我在一次讨论中,有人提到这两个词可以互换使用。大约两分钟后,我不得不停止谈话并说“你们应该知道它们是不同的,对吧?”‍,说完会上鸦…

json入参取特定分段值--mirth

入参 {"HEADER": {"MSGID": "000","MSGSENDDATE": "2023-10-12 00:00:00","MSGTYPE": "TJ025","AccepterID": "","SenderID": "HIS","MSGSTATUS":…

ChatGPT和DALL-E的系统提示词被曝光;每个开发人员都该了解的GPU知识

🦉 AI新闻 🚀 ChatGPT和DALL-E的系统提示词被曝光,揭示了其规则和操作细节 摘要:开发者和网友通过一种方法成功获取了ChatGPT和DALL-E的系统提示词,揭示了它们在对话和图像生成过程中遵循的规则和操作细节。这些提示…

数据库监控:关键指标和注意事项

【squids.cn】 全网zui低价RDS,免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 听到模糊的说法“我们的数据库有问题”对于任何数据库管理员或管理员来说都是一场噩梦。有时是真的,有时不是,到底问题出在哪里呢?真…

基于springboot实现车辆充电桩平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于sprinboot实现车辆充电桩平台管理系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&#…

【全国数据】中国乡镇级矢量面状数据(shp)

数据介绍 中国43655个乡镇,面状,GCS_WGS_1984坐标系。 数据预览 数据举例: 专栏分享常用的地理空间数据,包括矢量数据、栅格数据、统计数据等,订阅专栏后,从私信查收专栏完整数据包,持续同步更新…

Django实现音乐网站 (22)

使用Python Django框架做一个音乐网站, 本篇音乐播放器功能完善:顺序播放、设置播放数、歌词滚动等功能。 目录 顺序播放 设置顺序播放 单曲播放数 添加路由 视图处理 模板处理 歌词滚动 视图内容返回修改 样式设置 模板内容 歌词滚动脚本 歌…

为什么这些网站都在使用CFCA证书

在今天的数字时代,保障数据的安全至关重要,尤其是对于金融机构、政府部门和大型企业等组织而言。证书颁发机构在这一领域扮演着关键的角色,而CFCA(中国金融认证中心)证书已经脱颖而出,展现了其与其他证书的…

提取作者用户名,帖子内容,回复时间

import re import csv# 打开名为a1.txt的文件,并以只读模式(r)读取其内容。这里使用了UTF-8编码。 with open(网页源码a1.txt, r, encodingUTF-8) as f:# 读取文件的所有内容并赋值给变量source source f.read()# 使用正则表达式查找所有匹配region_header clea…

YOLOv8改进实战 | 更换损失函数之MPDIOU(2023最新IOU)篇

前言 YOLOv8官方默认损失函数采用的是CIoU。本章节主要介绍如何将MPDIoU损失函数应用于目标检测YOLOv8模型。 目录 一、MPDIoU二、代码实现添加损失函数更换损失函数一、MPDIoU 论文链接:MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression MPDIoU是一种基于…

【Tensorflow 2.12 智能商城商品推荐系统】

Tensorflow 2.12 智能商城商品推荐系统 前言架构数据召回排序部署调用结尾 前言 基于 Tensorflow 2.12 搭建一个简单的智能商城商品推荐系统demo~ 主要包含6个部分,首先是简单介绍系统架构,接着是训练数据收集、处理,然后是召回模型、排序模型…

Vue3.3指北(一)

Vue3.3指北 1、Vue32、Vue3安装3、Vue指令3.1、配置准备1.1.1、WebStrom配置模板1.1.2、配置devtools1.1.3、Vue3指令概览 3.2、内容渲染指令3.2.1、mustache语法3.2.2、v-once1.3.2、v-text1.3.3、v-html1.3.4、v-pre1.3.5、v-cloak 3.3、属性绑定指令3.3.1、v-bind1、v-bind绑…

如何查看SSL证书是OV还是DV?

网站的安全性与信任度对于用户来说至关重要,它决定着用户是否继续浏览以及是否与您开展业务。SSL证书则是确保网站能够通过HTTPS加密安全传输数据的基础,可确保网站的安全可信。部署了SSL证书的网站打开后,在浏览器地址栏处会有安全锁标志。而…

02.MySQL函数及约束、多表笔记

函数 函数是指一段可以直接被另一段程序调用的程序或代码。 字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 函数功能CONCAT(S1,S2,…Sn)字符串拼接,将S1,S2,.Sn拼接成一个字符串LOWER(str)将字符串str全部转为小写UPPER(str)将…

真正的办公神器-ONLYOFFICE你了解多少?

陈老老老板🤴 🧙‍♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙‍♂️本文简述:最近在进行办公软件的调研工作,发现一个开源、…

Merge Joins(PostgreSQL 14 Internals翻译版)

合并连接处理按连接键排序的数据集,并返回以类似方式排序的结果。输入集可以在索引扫描后预先排序;否则,执行者必须在实际合并开始之前对它们进行排序。 归并排序集 让我们看一个合并连接的例子;它在执行计划中由Merge Join节点表示: 优化器…

效率提升一键完成房产小程序源码揭秘高效业务流程优化

在当今快节奏的房产市场中,提升业务流程的效率对于房地产行业从业者来说至关重要。而房产小程序源码作为一种全新的技术解决方案,为行业带来了前所未有的便利和效益。本文将为您揭秘房产小程序源码的重要性以及如何利用该技术优化业务流程,实…

双态IT乌镇用户大会——数据中心业务连续性国标专题研讨会成功举办

2023年10月13日-15日,由ITSS分会、证券基金行业信息技术应用创新联盟指导,ITSS数据中心运营管理组(DCMG)、双态IT论坛、智能运维国标工作组主办,ITSS媒体组、AI范儿协办的“2023第六届双态IT乌镇用户大会”于浙江乌镇召…