如何在Python中的plotly.graph_objects中制作由变量着色的折线图

时间:2019-10-31 05:54:40

标签: plotly plotly-python

我在下面制作折线图。我想用变量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 个答案:

答案 0 :(得分:1)

使用类似color=gapminder['Continent']的方法通常适用于散点图,在散点图中,您可以使用第三个变量为现有点定义类别。您正在尝试在此处绘制 line 图。这意味着不仅每个大陆都有颜色,而且每个大陆都有 line 。如果实际上这是您要实现的目标,请使用以下一种方法:

情节:

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