簡體   English   中英

如何使用 plotly_express 繪制多折線圖?

[英]How to draw a multiple line chart using plotly_express?

我需要從數據框的多列創建折線圖。 在 pandas 中,您可以使用如下代碼繪制多折線圖:

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

如何使用 plotly_express 完成此操作?

Plotly.py 的 4.8 版中,原始問題中的代碼現在幾乎不加修改地得到支持:

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

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

對於此示例,您可以稍微不同地准備數據。

df_melt = df.melt(id_vars='date', value_vars=['sessions', 'cost'])

如果您將列(會話、成本)轉置/融合到其他行中,則可以在顏色參數中指定新列“變量”作為分區依據。

px.line(df_melt, x='date' , y='value' , color='variable')

plotly_express 輸出示例

使用較新版本的 plotly,您只需要:

df.plot()

只要你記得將pandas 繪圖后端設置為 plotly

pd.options.plotting.backend = "plotly"

從這里您可以輕松地根據自己的喜好調整情節,例如設置主題:

df.plot(template='plotly_dark')

以深色主題繪制:

在此處輸入圖像描述

新版 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')

舊版本的答案:

例如,如果您想在 Jupyter Notebook 中使用 plotly,我強烈建議您改用iplot()

陰謀:

在此處輸入圖像描述

代碼:

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)

還值得指出的是,您可以將 plotly express 與 graph_objs 結合使用。 當線條具有不同的 x 點時,這是一條很好的路線。

import numpy as np
import pandas as pd

import plotly.graph_objs as go
import plotly.express as px

# data set 1
x = np.linspace(0, 9, 10)
y = x

# data set 2
df = pd.DataFrame(np.column_stack([x*0.5, y]), columns=["x", "y"])

fig = go.Figure(px.scatter(df, x="x", y="y"))
fig.add_trace(go.Scatter(x=x, y=y))

fig.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM