簡體   English   中英

Plotly:如何自定義圖例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM