是否可以更改线条不透明度但不能更改标记不透明度?
我发现我可以设置整行的不透明度,包括标记 (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)
我的问题如下:我的数据点很重要,线条只是视觉辅助。我想让线条变得 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)
关于python - plotly.py : change line opacity, 使标记不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488894/