Pyecharts绘图教程(2)—— 绘制多种折线图(Line)参数说明+代码实战
文章目录
- 🎯 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_xaxis、add_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()

🎯🎯🎯 更多可视化项目源码+数据
点击跳转:【全部可视化项目源码+数据】
以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享(注明出处)让更多人知道。
相关文章:
Pyecharts绘图教程(2)—— 绘制多种折线图(Line)参数说明+代码实战
文章目录 🎯 1 简介🎯 2 图表配置项2.1 导入模块2.2 数据配置项2.3 全局配置项 🎯 3 代码实战3.1 基础折线3.2 平滑曲线(is_smooth)3.3 阶梯折线(is_step)3.4 空值过渡(is_connect_n…...
oracle实现搜索不区分大小写
<if test"code ! null and code ! ">and upper(code) like upper(%${code}%) </if>关键字upper...
C++中->与.的区别
在类中 在 C 中,-> 和 . 都可以用于访问类的成员变量和成员函数。但它们在使用上有一些区别: 1. 对于指针类型的对象,必须使用 -> 来访问其成员;而对于非指针类型的对象,则需要使用 . 。 2. -> 运算符在实…...
大语言模型(LLM)综述(二):开发大语言模型的公开可用资源
A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更…...
【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅳ—— 替换默认证书
目录 博文摘要6. 使用企业 CA 签发的 SSL 证书 替换 vSphere 默认 SSL 证书6.1 确认证书文件6.2 替换默认 vSphere 证书6.3 验证自签名证书6.4 补充说明 关联博文参考资料 博文摘要 博文主要描述了在 vCenter Server 8 上通过实用工具 certificate-manager 将 vSphere 默认 Ma…...
NI9234 4 通道, ±5 V, 24 位软件可选 IEPE 和 AC/DC模拟输入模块振动测试国产替代
NI的自动化测试和测量系统将助您打破桎梏,化不可能为可能。让我们携手合作,选择最适合您的硬件、软件和服务组合,为您提供全副武装,助您成就非凡。 购买NI的产品或服务,并非只是单纯的一次性交易行为。如果您有任何疑…...
宁波市:做大做强跨境电商 赋能外贸创新发展
近日,全国政协第十四届常委会第二次会议专题研究“构建新发展格局,推进中国式现代化”议题,市政协主席徐宇宁参加“推动高水平对外开放”专题小组讨论,全国政协副主席蒋作君到会听取发言,国家发改委、商务部相关司局负…...
为什么这些网站都在使用CFCA证书
在今天的数字时代,保障数据的安全至关重要,尤其是对于金融机构、政府部门和大型企业等组织而言。证书颁发机构在这一领域扮演着关键的角色,而CFCA(中国金融认证中心)证书已经脱颖而出,展现了其与其他证书的…...
Java编程规范(命名规则),Java程序的运行过程(执行流程)分析
编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用。 首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码。命名规则包括以下几点。 包的名称由一个小写字母序列组成。类的名称由大…...
layui框架实战案例(21):layui table单元格显示图片导致复选框冗余的解决方案
图片自适应表格CSS 为防止单元格内的图片不能正常显示,需本地重写CSS。 /*layui-table图片自适应*/ .layui-table-cell {height: auto;line-height: 20px;}.layui-table-cell img {height: 50%;max-width: 50%; }列代码 , cols: [[{type: checkbox,fixed:left, w…...
指针常量和常量指针
大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 指针常量和常量指针光是这名字就让人头疼了。更何况还有细节问题要理清楚。 正文 命名 其实我…...
GitLab-访问返回403 forbidden问题处理
访问gitlab时报错forbidden 一般访问量大,密码错误频率高的时候,gitlab防爆机制启动了,对IP做了封禁,导致某些IP访问的是否返回 403 forbidden 1. 查看被封的IP /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/red…...
快来get策略模式,告别编程困惑,轻松变身编程高手✨
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一…...
UPS负载箱的工作原理是什么?
UPS负载箱(Uninterruptible Power Supply Load Bank)内部包含一组电阻器,通过调节电阻值来模拟不同负载条件。当UPS供电时,电阻器会吸收一定的电能,从而模拟实际负载对UPS的需求。UPS负载箱配备了控制系统,…...
深度学习八股文: 模型训练全过程及各阶段的原因
深度学习模型的训练全过程通常包括以下步骤: 数据准备: 首先,需要准备用于训练的数据集。数据集应包含输入特征(通常是数值或图像数据)和相应的目标标签。数据通常需要被分为训练集、验证集和测试集,以便评…...
CY3-NHS ester良好的光稳定性介绍1032678-38-8
CY3-NHS ester通常表现出良好的光稳定性,这使得它在长时间的荧光成像和实验中非常有用。以下是关于CY3-NHS ester良好光稳定性的一些介绍: 1.抗光漂白性能:CY3-NHS ester通常对光漂白表现出相对高的抵抗力。这意味着在持续激发下,…...
大厂秋招真题【贪心】美团20230826秋招T2-小美的数组重排
文章目录 【贪心】美团2023秋招-小美的数组重排题目描述与示例题目描述输入描述输出描述示例输入输出 说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 【贪心】美团2023秋招-小美的数组重排 题目描述与示例 题目描述 小美有两个长度为n…...
UnitTest框架的使用
文章目录 一、UnitTest框架是什么?二、UnitTest核心要素三、TestCase四、TestSuite & TestRunner 一、UnitTest框架是什么? UnitTest框架是python自带的一个单元测试框架,主要用它来做单元测试,它有以下特点: 能…...
软件开发项目文档系列之四如何成功撰写一份引人注目的投标文件
目录 前言1 分析招标文件1.1 投标的基础要求分析1.2 投标重点要求分析1.3 评分标准分析1.4 技术需求分析 2 撰写完整的投标文件2.1 明确文件用途2.2 提供评分指引2.3 内容完整重点突出2.4 重视图表和图示 3 认真检查和经验积累3.1 深入的准备3.2 反复检查3.3 咨询和确认3.4 积累…...
Django设置跨域
1, 安装 pip install django-cors-headers 2, 添加应用 INSTALLED_APPS (...corsheaders,... ) 3, 中间层设置 MIDDLEWARE [corsheaders.middleware.CorsMiddleware,... ] 4, 添加白名单 # CORS CORS_ORIGIN_WHITELIST (127.0.0.1:8080,localhost:8080,www.meiduo.si…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
