Как сделать линейные диаграммы раскрашенными переменной в plotly.graph_objects в python - PullRequest
1 голос
/ 31 октября 2019

Я делаю линейный график ниже. Я хочу, чтобы линии окрашивались переменной Continent. Я знаю, что это легко сделать с помощью plotly.express

Кто-нибудь знает, как я могу сделать это с plotly.graph_objects? Я пытался добавить color=gapminder['Continent'], но это не сработало.

Большое спасибо за помощь заранее.

import plotly.express as px
gapminder = px.data.gapminder()
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=gapminder['year'], y=gapminder['lifeExp'],
                    mode='lines+markers'))
fig.show()

1 Ответ

1 голос
/ 31 октября 2019

Использование подхода, подобного color=gapminder['Continent'], обычно применяется к точечным диаграммам, где вы определяете категории для существующих точек, используя третью переменную. Вы пытаетесь сделать линию сюжет здесь. Это означает, что у вас будет не только цвет на континент, но также линия на континент. Если это именно то, к чему вы стремитесь, вот один из подходов:

Сюжет:

enter image description here

Код:

import plotly.graph_objects as go
import plotly.express as px

# get data
df_gapminder = px.data.gapminder()

# manage data
df_gapminder_continent = df_gapminder.groupby(['continent', 'year']).mean().reset_index()
df = df_gapminder_continent.pivot(index='year', columns='continent', values = 'lifeExp')
df.tail()

# plotly setup and traces
fig = go.Figure()
for col in df.columns:
    fig.add_trace(go.Scatter(x=df.index, y=df[col].values,
                                 name = col,
                                 mode = 'lines'))
# format and show figure
fig.update_layout(height=800, width=1000)
fig.show()
...