Добавление легенды и разные цвета каждой панели - PullRequest
2 голосов
/ 19 июня 2020

Я пытаюсь построить график распределения классов.

import plotly.graph_objects as go
df = pd.read_csv('https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv')
fig = go.Figure()
fig.add_trace(go.Histogram(histfunc="count",  x=df['variety'], showlegend=True))
fig

Это дает мне:

enter image description here

Я хочу, чтобы легенда была Setosa, Versicolor, Virginica и каждая полоса с другой цвет.

Используя pandas Я могу (хотя там есть проблема с легендой):

ax = df['variety'].value_counts().plot(kind="bar")
ax.legend(df.variety.unique())

enter image description here

Я хочу это для интеграции с plotly da sh, поэтому я использую plotly go. Если кто-то может мне помочь с этой проблемой. Это было бы для меня большим подспорьем, так как я новичок ie в графике.

1 Ответ

2 голосов
/ 19 июня 2020

Одним из решений является добавление каждого следа отдельно для всех уникальных значений разновидности (или вида в моих данных). При добавлении каждой трассы используйте аргумент name, чтобы легенда могла быть заполнена соответствующим текстом. Примерно так:

import plotly.graph_objects as go
import pandas as pd

df = pd.read_csv('iris.csv')

var = df.species.unique()
fig = go.Figure()
for v in var:
    fig.add_trace(go.Histogram(histfunc="count",  
                               x=df.species[df.species==v], 
                               showlegend=True,
                               name=v
                              )
                 )

fig

enter image description here

...