如何使用plotly_express绘制多线图?

Rya*_*yan 6 python charts plotly

我需要从一个数据框的多个列创建一个折线图。在熊猫中,您可以使用以下代码绘制多条折线图:

df.plot(x='date', y=['sessions', 'cost'], figsize=(20,10), grid=True)
Run Code Online (Sandbox Code Playgroud)

如何使用plotly_express完成?

小智 18

使用Plotly.py 4.8 版,现在几乎不加修改地支持原始问题中的代码:

pd.options.plotting.backend = "plotly"
df.plot(x='date', y=['sessions', 'cost'])
Run Code Online (Sandbox Code Playgroud)

上一个答案,截至 2019 年 7 月

对于此示例,您可以稍微不同地准备数据。

df_melt = df.melt(id_vars='date', value_vars=['sessions', 'cost'])
Run Code Online (Sandbox Code Playgroud)

如果您将列(会话、成本)转置/融合到其他行中,则可以在颜色参数中指定新列“变量”以进行分区。

px.line(df_melt, x='date' , y='value' , color='variable')
Run Code Online (Sandbox Code Playgroud)

示例 plotly_express 输出


ves*_*and 8

使用较新版本的plotly,您所需要的只是:

df.plot()
Run Code Online (Sandbox Code Playgroud)

只要你记得将pandas 绘图后端设置为plotly

pd.options.plotting.backend = "plotly"
Run Code Online (Sandbox Code Playgroud)

从这里您可以轻松地根据自己的喜好调整情节,例如设置主题:

df.plot(template='plotly_dark')
Run Code Online (Sandbox Code Playgroud)

黑暗主题情节:

在此输入图像描述

新版本的plotly 的一个特别棒的功能是,您不再需要担心您的pandas 数据帧是宽格式还是长格式。无论哪种方式,您所需要的只是df.plot()。查看下面代码片段中的详细信息。

完整代码:

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

# settings
pd.options.plotting.backend = "plotly"

# sample dataframe of a wide format
np.random.seed(4); cols = list('abc')
X = np.random.randn(50,len(cols))  
df=pd.DataFrame(X, columns=cols)
df.iloc[0]=0; df=df.cumsum()

# plotly figure
df.plot(template = 'plotly_dark')
Run Code Online (Sandbox Code Playgroud)

旧版本的答案:

iplot()如果您想在 Jupyter Notebook 中使用plotly,我强烈建议您使用,例如:

阴谋:

在此输入图像描述

代码:

import plotly
import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import numpy as np


# setup
init_notebook_mode(connected=True)
np.random.seed(123)
cf.set_config_file(theme='pearl')

# Random data using cufflinks
df1 = cf.datagen.lines()
df2 = cf.datagen.lines()
df3 = cf.datagen.lines()
df = pd.merge(df1, df2, how='left',left_index = True, right_index = True)
df = pd.merge(df, df3, how='left',left_index = True, right_index = True)

fig = df1.iplot(asFigure=True, kind='scatter',xTitle='Dates',yTitle='Returns',title='Returns')
iplot(fig)
Run Code Online (Sandbox Code Playgroud)

  • 感谢维斯特兰的帮助。Cufflinks 是一个非常有用的库,可直接在 pandas 数据框中绘制图表。但是,我仍然想知道是否有一种方法可以使用plotlyexpress 执行相同的单行代码。 (3认同)