[英]Plotly: How to customize legend?
我已经自定义了使用 plotly 绘制的数据点的颜色。 数据点的颜色是根据与其关联的标签分配的。 但是,在设置legend
= True
所有三种颜色(在字典中定义)都不会显示在图中。
我想要,
'a': 'rgb(147,112,219)(the actual color in here)',
'b': 'rgb(220,20,60)',
'c': 'rgb(0,128,0)'
显示在图的右上角。
import pandas as pd
import plotly as plotly
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
label = ['a', 'b', 'a', 'b', 'c']
label_df = pd.DataFrame({'color': label})
color = {'a': 'rgb(147,112,219)',
'b': 'rgb(220,20,60)',
'c': 'rgb(0,128,0)'
}
cols = label_df['color'].map(color)
data = [
go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
mode='markers',
marker=dict(size=10, color=cols)
)
]
layout = go.Layout(
hovermode='y',
showlegend=True,
barmode='stack',
title='plot'
)
fig = go.Figure(data=data, layout=layout)
plot(fig, filename='plot.html')
关于如何在图中显示自定义图例的任何建议?
这是代码片段生成的图:
图例的外观和结构旨在反映您的图形内容。 你在这里想要完成的事情很有可能,但在我看来,最好以稍微不同的方式完成。 如果您希望所有a
标签都具有颜色'rgb(147,112,219)'
,并且您对a
了多次观察,那么只需构建您的图形以准确显示,以使图例有意义。 通常,每条轨迹都有一个图例元素。 你有一个痕迹。 你和我的方法之间的主要区别是我为每个唯一标签添加一个跟踪。 下面的代码片段将为您提供以下情节,我认为这是您想要的结果:
完整代码:
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame({'label': ['a', 'b', 'a', 'b', 'c'],
'x': [1, 2, 3, 4, 5],
'y': [1, 2, 3, 4, 5]})
color = {'a': 'rgb(147,112,219)',
'b': 'rgb(220,20,60)',
'c': 'rgb(0,128,0)'}
fig = go.Figure()
for lbl in df['label'].unique():
dfp = df[df['label']==lbl]
#print(dfp)
fig.add_traces(go.Scatter(x=dfp['x'], y=dfp['y'], mode='markers',
name=lbl,
marker = dict(color=color[lbl], size = 12)
))
fig.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.