首页 > 解决方案 > Plotly 中的 Seaborn HUE

问题描述

我有这个数据框Gas Price Brazil / Data Frame
我只从这个 DF 获得汽油值,并想绘制每个地区 (REGIAO) 随时间 (YEARS - ANO) 的平均价格 (PREÇO MEDIO)

我将 Seaborn 与 HUE 一起使用并得到了这个:

希伯恩情节

但是当我尝试在 Plotly 上绘制相同的东西时,结果是:

情节情节

如何使用 plotly 获得相同的情节?

我搜索并找到了这个:Seaborn Hue on Plotly

但这对我不起作用。

标签: pythonpandasmatplotlibplotlyseaborn

解决方案


答案:

color您将使用 plotly express 和属性实现相同的目的:

fig = px.line(dfm, x="dates", y="value", color='variable')

细节:

您还没有详细描述数据的结构,但是像这样分配色调通常意味着应用于数据结构,例如......

Date    Variable    Value
01.01.2020    A    100
01.01.2020    B    90
01.02.2020    A    110
01.02.2020    B    120

...其中唯一的色调或颜色分配给与时间戳列相关联的不同变量名称,其中每个时间戳出现的次数与变量的数量一样多。

seaborn似乎也是如此:

hue : 数据或向量数据中的变量名称,可选

将产生具有不同颜色的点的分组变量。可以是分类的或数字的,尽管在后一种情况下颜色映射的行为会有所不同。

color您可以通过使用 in 中的属性来实现相同的目的go.Scatter(),但似乎您也可以很好地利用它plotly.express。在您提供适当的数据样本之前,我将向您展示如何使用numpypandas使用数据框中的一些采样数据来做到这一点。

阴谋:

在此处输入图像描述

代码:

# imports
import numpy as np
import pandas as pd
import plotly.express as px

# sample time series data
np.random.seed(123)
df = pd.DataFrame(np.random.randint(-10,12,size=(50, 4)), columns=list('ABCD'))
datelist = pd.date_range(pd.datetime(2020, 1, 1).strftime('%Y-%m-%d'), periods=50).tolist()
df['dates'] = datelist 
df = df.set_index(['dates'])
df.index = pd.to_datetime(df.index)
df.iloc[0]=0
df=df.cumsum().reset_index()

# melt data to provide the data structure mentioned earlier
dfm=pd.melt(df, id_vars=['dates'], value_vars=df.columns[1:])
dfm.set_index('dates')
dfm.head()

# plotly
fig = px.line(dfm, x="dates", y="value", color='variable')
fig.show()

推荐阅读