Plotly:如何自定义图例?

Posted

技术标签:

【中文标题】Plotly:如何自定义图例?【英文标题】:Plotly: How to customize legend? 【发布时间】:2019-11-14 04:49:52 【问题描述】:

我已经自定义了使用 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')

关于如何在图中显示自定义图例有什么建议吗?

下面是代码sn-p生成的图:

【问题讨论】:

【参考方案1】:

图例的外观和结构旨在反映人物的内容。您在这里要完成的目标很有可能,但在我看来,最好以稍微不同的方式完成。如果您希望所有a 标签都具有'rgb(147,112,219)' 的颜色,并且您已经对a 进行了多次观察,那么只需构建您的图形以准确显示这一点,以便使图例有意义。通常,每条迹线都有一个图例元素。你有一个的踪迹。您和我的方法之间的主要区别在于,我为每个唯一标签添加了一条跟踪。下面的代码 sn-p 将为您提供以下情节,我认为这是您想要的结果:

完整代码:

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()

【讨论】:

以上是关于Plotly:如何自定义图例?的主要内容,如果未能解决你的问题,请参考以下文章

自定义外观 plotly.js 图例

如何避免重复的图例标签或通过自定义图例标签

Plotly:热图颜色图例我的子图

如何使用 plotly 自定义平行类别图颜色? Python版

Plotly:如何使用 plotly express 自定义 xaxis 刻度标签?

Plotly:如何设置自定义 xticks