python - Plotly:如何设置不同的标记不透明度,但为所有标记保持相同的轮廓颜色?

标签 python plotly

我正在尝试在标记不透明度被某些向量改变的地方放置标记。
但是标记边缘颜色不透明度不变 .

   fig.add_trace(go.Scatter(x=real.index, y=real['some_value'],
                             mode='markers',
                             marker={'opacity': real['another value'],
                                     'color':'green',
                                     'size':10,
                                     'line':dict(width=1,
                                                 color='rgba(165,42,42,1)')}
                            ))

从下图中可以看出,标记边缘的颜色不透明度与标记填充的颜色不透明度一起发生变化。
我的目的是保持线条(标记边缘)不透明度不变。
enter image description here
注意:这个问题没有回答这个问题:
plotly.py: change line opacity, leave markers opaque

最佳答案

您可以轻松rescale a pandas series 0 到 1 之间,并将其用作 rgba(red,green,blue,opacity) 中的参数喜欢 color='rgba(100,0,255,'+opac+')'哪里opac是图中某个标记的 0 到 1 之间的一些不透明度。标记的颜色属性对于任何 go.Scatter() 都是唯一的,因此您必须为每个点添加唯一的跟踪。然后,同时,您可以使用 marker=dict(line=dict(color='rgba(100,0,255,1)')) 为标记的轮廓设置颜色(如果您感觉如此倾斜,还可以设置不透明度)。
在下图中,我将轮廓颜色设置为“rgba(100,0,255,1)”,并且标记填充的不透明度根据上述逻辑而变化。这样,最高值将显示为一个完全“填充”的标记:
enter image description here
但是您也可以使用例如 line=dict(color='rgba(0,0,0,1)', width = 2) 设置更明确定义的线。得到这样的东西:
enter image description here
现在您可以玩转所有 rgba找到你喜欢的颜色的论据。
完整代码:

# imports
import plotly.graph_objects as go
import pandas as pd
import numpy as np

# sample data in the form of an hourlt
np.random.seed(1234)
tseries = pd.date_range("01.01.2020", "01.04.2020", freq="H")
data = np.random.randint(-100, 100, size=(len(tseries), 3))
df = pd.DataFrame(data=data)
df.columns=list('ABC')
df['C_scaled'] = df['C'].max()/df['C']
df['C_scaled'] = (df['C']-df['C'].min())/(df['C'].max()-df['C'].min())

df = df.sort_values(by=['C_scaled'], ascending=False)

fig=go.Figure()

for ix in df.index:
    d = df.iloc[ix]
    opac = str(d['C_scaled'])
    fig.add_trace(go.Scatter(x=[d['A']], y=[d['B']], showlegend=False,
                             marker=dict(size = 14, color='rgba(100,0,255,'+opac+')',
                                         line=dict(color='rgba(0,0,0,1)', width = 2)))
                            )
    
fig.show()
编辑:悬停信息的副作用
只需包含以下内容即可编辑 hoverinfo,以便 x 和 y 值始终在悬停时显示到 closeset 值:
fig.update_layout(hovermode="x")
fig.update_traces(hoverinfo = 'x+y')

关于python - Plotly:如何设置不同的标记不透明度,但为所有标记保持相同的轮廓颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63353438/

相关文章:

r - 控制热图的标题和色阶的最小/最大值

python - Jupyter/Plotly - 如何从 add_trace 替换或更新绘图?

python - 在 matplotlib 中将一些值绘制为极坐标图

python - 使用 Python 和 Gstreamer 进行音频转换

r - 如何为 R Plotly 散点图中的每个点显式分配唯一的颜色?

hover - Plotly,更改悬停文本

python - 如何在 Matplotlib 中显示带有西里尔字母的 Pandas 数组

用于删除在 2 个具体字符串之间找到的行的 Python 脚本

python - 运行单元测试时如何修补或修改函数内部的列表?

python - 在 jupyter notebooks : Validation fails when saving 中作图