![](/img/trans.png)
[英]Plotly: How to animate a bar chart with multiple groups using 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,您只需要:
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.