python - plotly.py : change line opacity, 使标记不透明

标签 python plotly opacity

是否可以更改线条不透明度但不能更改标记不透明度? 我发现我可以设置整行的不透明度,包括标记 (opacity = .5) 和标记之一(例如 marker={"opacity":1}).

如本例所示:

import plotly
import plotly.graph_objs as go
plotly.offline.init_notebook_mode(connected=True)  # I'm running in a jupyter notebook

x = np.arange(0,10)
ys = [np.random.rand(10) for _ in range(3)]

lines = []
for y in ys:
    line = go.Scatter(x=x, y=y, mode="markers+lines", opacity=.5, marker={'symbol': 'x', 'size': "15", "opacity":1})
    lines.append(line)           
fig = go.Figure(
    data=lines,
    layout=go.Layout(showlegend=True)
)
plotly.offline.iplot(fig)

在这里查看结果: current result

我的问题如下:我的数据点很重要,线条只是视觉辅助。我想让线条变得 0.5 不透明,但标记完全不透明。
但是,当我设置 opacity=.5,marker={'opacity':1} 时,标记的不透明度也会降低。 (我相信标记不透明度是在 [0, line-opacity] 范围内定义的。

有什么方法可以获取线条的颜色并调整其不透明度(也许甚至在创建线条之后,但在绘制它之前)。 我知道我可以创建两条轨迹,一 strip 有点,一 strip 有线。但是,我希望它们具有相同的颜色,而不必手动指定颜色。 (迹线的数量各不相同,因此我更喜欢坚持分配不同颜色的标准机制)

编辑:我当前的解决方案是将线宽设置为 0.5,这样它看起来更好,但显然这个解决方案适合我,可能对人们没有用想要粗体且不透明的线条的人。

编辑:有关此问题/功能请求/行为的 Github 问题: https://github.com/plotly/plotly.js/issues/2684

最佳答案

TL;DR - 可以使用: line=dict(color='rgba(255, 0, 0, 0.5)') - 来自 @david Parks 的示例

线条对象没有不透明度属性,但您可以使用RGBA指定颜色并设置 Alpha。您必须使用 RGBA标记分配颜色,否则它将从线条继承。

在下面的示例中,我创建了三条具有随机颜色的随机线。然后,我为标记和线条分配相同的颜色,但使用字符串连接来更改线条与标记的不透明度。标记将完全不透明,而线条将是 80% 透明。

import plotly
import numpy as np
import plotly.graph_objs as go

plotly.offline.init_notebook_mode(connected=True)
x = np.arange(0,10)
ys = [np.random.rand(10) for _ in range(3)]

lines = []
dots = []
for y in ys:
    my_color = ('rgba('+str(np.random.randint(0, high = 256))+','+
                str(np.random.randint(0, high = 256))+','+
                str(np.random.randint(0, high = 256)))
    # my_color := "rgba( 143, 82, 244"
    line = go.Scatter(
            x=x, 
            y=y, 
            mode="lines+markers", 
            marker={ 
                    'symbol': 'x', 
                    'size': "15", 
                    'color':my_color+',1)' # "rgba( 143, 82, 244,1)"
                    },
            line={
                "color":my_color+',0.2)'
            })
    lines.append(line)  

fig = go.Figure(
    data=lines,
    layout=go.Layout(showlegend=True)
)
plotly.offline.iplot(fig)

enter image description here

关于python - plotly.py : change line opacity, 使标记不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488894/

相关文章:

python - 返回jsonresponse之前修改serializer.data格式

python - 使用算法而不是标准计算在 python 上添加大数字

python - Plotly:如何使用 facet 设置 plotly.express 图表的位置?

r - 具有负值的ggplot2堆积条不适用于Plotly

javascript - 如何在单击元素后保持悬停样式? (jQuery)

css - 在不更改输入的情况下调整表单背景的不透明度

css - 作为背景和图像的不透明度

python - 无法在 python 中的 typewrite 函数中传递变量

python - 带有文本和图标项的 QListWidget

python - Plotly Express 散点调整点大小