用pyecharts的overlap绘制叠加图时,设置的颜色不起作用

问题

用pyecharts绘制叠加图时,如折线图上叠加散点图时,分别设置了自己的颜色(三角是绿色,圆形是蓝色),但是渲染颜色和图例颜色不一致,如下图所示,折线颜色和散点颜色相同。
在这里插入图片描述

解决1

这种情况,可以在折线图绘制时,在add_yaxis中增加linestyle_opts=opts.LineStyleOpts(color=‘red’)参数来设置折线颜色,结果如下图所示
在这里插入图片描述

解决2

但是如果叠加的图有点多,比如叠加了两种散点图,就无法区别两种散点图了,如下图:
在这里插入图片描述
该图为了方便查看,用不同的符号形状来区分了两种散点图,但是他们的颜色是一样的。究其原因是因为叠加用overlap将多个图放在一个图像上显示,并且在最底图层上增加了全局的可视映射visualmap_opts=opts.VisualMapOpts(is_show=True)。如上图是将两个散点图加到了折线图上,在绘制折线图时设置了该参数,即便该参数中的is_show=False,也会出现上述的结果,只是少了上图左下角的色标。所以简单粗暴一些,直接删除。结果如下图:
在这里插入图片描述
上图也和我们想要的结果不一致(最初设置的三角是绿色,圆形是蓝色的),图中三角是蓝色,圆形的颜色是自动新加的颜色。仔细看图标会发现,第一个折线的图例是一条线加一个圆圈,但是圆圈是绿色的,这正是我们给三角设置的颜色,这是因为在绘制折线时默认每个点用圆圈来标记,为了好看,我们在绘制折线图时将这个圆圈设置不显示(is_symbol_show=False),但是它有颜色的,它是设置颜色中的倒数第三位(echarts机制,默认几个颜色,之后设置的颜色都加到最后面),所以在绘制折线图时将该圆圈的颜色设置为和线的颜色相同或者其他颜色,让它占颜色位置。设置后的结果图如下:
在这里插入图片描述
这里我给折线上的圆圈颜色设置为pink, 添加到add_yaxis中的参数代码为:color=‘pink’

完整代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ----------------------------------
# @Time    : 2024/3/11 14:41
# @File    : ab_ana_0304 - test.py
# Description   : 
# ----------------------------------
from pyecharts.charts import Line, Scatter
import pyecharts.options as opts
linex = []
liney = []
scatter1x = []
scatter1y = []
scatter2x = []
scatter2y = []
line = (Line()
        .add_xaxis(linex)
        .add_yaxis('value', liney, color='pink', is_symbol_show=False, linestyle_opts=opts.LineStyleOpts(color='red'))
        .set_global_opts(title_opts=opts.TitleOpts(title="{}指标数据趋势图".format(00)),
                         yaxis_opts=opts.AxisOpts(min_=10, max_=20),
                         datazoom_opts=opts.DataZoomOpts(),  # 添加数据缩放
                         # visualmap_opts=opts.VisualMapOpts(is_show=False)
                         )
        )

ab_scatter1 = (
    Scatter()
    .add_xaxis(scatter1x)
    .add_yaxis("abnormal point1", y_axis=scatter1y,
               symbol_size=10,  # 设置散点的大小
               symbol='triangle',
               label_opts=opts.LabelOpts(is_show=False),
               color='green'
               )
    .set_series_opts()
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
)


# 异常点展示
ab_scatter2 = (
    Scatter()
    .add_xaxis(xaxis_data=scatter1y)
    .add_yaxis(series_name="abnormal point2",
               y_axis=scatter2y,
               symbol='circle',
               color='blue'
               )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
)

# 将散点图叠加在折线图上
# 使用Overlap组件创建复合图表
line.overlap(ab_scatter1)
line.overlap(ab_scatter2)
line.render("颜色测试.html")
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值