如何解决情节:如何设置不同的标记不透明度,但为所有标记保留相同的轮廓颜色? 完整代码:
我正在尝试标记制造商不透明度因某些矢量而改变的标记。
但是标记边缘颜色不透明度恒定。
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,1)')}
))
在下面的图中可以看出,标记边缘的颜色不透明度随标记填充物的颜色不透明度而改变。
我的目的是保持线条(标记边缘)的不透明度恒定。
注意:此问题不能回答问题:
plotly.py: change line opacity,leave markers opaque
解决方法
您可以轻松地rescale a pandas series在0到1之间,并将其用作rgba(red,green,blue,opacity)
中的参数,例如color='rgba(100,255,'+opac+')'
,其中opac
对于某些标记在0到1之间有些不透明在你的形象。标记的color属性对于任何go.Scatter()
都是唯一的,因此您必须为每个点添加唯一的迹线。然后,同时,您可以使用marker=dict(line=dict(color='rgba(100,1)'))
在下图中,我将轮廓颜色设置为“ rgba(100,1)”,并且标记填充的不透明度根据上述逻辑而有所不同。这样,最高值将显示为完全“填充”的标记:
但是您也可以使用line=dict(color='rgba(0,1)',width = 2)
来设置更明确定义的行,以获得类似这样的内容:
现在,您可以使用所有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,'+opac+')',line=dict(color='rgba(0,width = 2)))
)
fig.show()
编辑:Hoverinfo的副作用
只需包含以下内容即可编辑hoverinfo,以便将x和y值始终显示在鼠标悬停在closeset值上:
fig.update_layout(hovermode="x")
fig.update_traces(hoverinfo = 'x+y')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。