如何在 Python 中使用 Plotly Express 在同一 y 轴上绘制多条线

UGu*_*lli 10 python plotly plotly-express

我刚刚安装了plotly express。我正在尝试做一些简单的事情 - 将我的数据框的每一列绘制在同一个 y 轴上,索引作为 x 轴。以下是问题/观察:

数据框是否有必要将索引作为列用作 x 轴?我可以不直接使用 x 轴的索引吗?如何为同一个 x 轴添加在 y 轴上以绘图方式调用的多个轨迹?

请注意,我不是尝试使用 plotly 添加跟踪,而是尝试使用 plotly-express。

此外,网上有一些类似的帖子,最接近的是这个https : //community.plot.ly/t/multiple-traces-plotly-express/23360 但是,这篇文章展示了如何添加散点,而不是一条线. 我想绘制一条线,但没有类似于此处示例中显示的 add_scatter 的 add_line。

提前感谢任何帮助

示例代码:

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

# Get some data
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')

# Plot 
fig = px.line(df, x='Date', y='AAPL.High')

# Only thing I figured is - I could do this 
fig.add_scatter(x=df['Date'], y=df['AAPL.Low']) # Not what is desired - need a line 

# Show plot 
fig.show()
Run Code Online (Sandbox Code Playgroud)

阴谋:

在此处输入图片说明

ves*_*and 19

你的代码工作正常!但是,如果您特别不想将(有些费力的)add_trace()功能应用于每一行,则可以使用px.line(). 这曾经要求您将数据从宽格式转换为长格式。但现在不是了,所以只需定义一个索引并命名您想要绘制的列。或者通过例如引用您的数据框列的全部或子集,y=df.columns[1:-6]

代码 1:

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

# data
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
fig = px.line(df, x='Date', y=df.columns[1:-6])

# Show plot 
fig.show()
Run Code Online (Sandbox Code Playgroud)

阴谋:

在此处输入图片说明

如果您想知道如何使用长格式的数据做同样的事情,这里是您如何使用 Pandas 和 plotly 做到这一点:

代码 2:

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

# data
df_wide = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
df_long=pd.melt(df_wide, id_vars=['Date'], value_vars=['AAPL.Open', 'AAPL.High', 'AAPL.Low', 'AAPL.Close', 'mavg'])

# plotly 
fig = px.line(df_long, x='Date', y='value', color='variable')

# Show plot 
fig.show()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。当您想要处理所有列时,您可以从 df_wide 对象获取列名称,这样您的代码对于第一列中包含日期且其他列中包含值的任何 csv 都是通用的: `df_long=pd.melt(df_wide, id_vars=df_wide.columns [0],value_vars=df_wide.columns[1:])` (2认同)

小智 5

不确定您要寻找什么类型的线路,但您是否尝试过类似下面的操作

fig.add_scatter(x=df['Date'], y=df['AAPL.Low'],mode='lines')
Run Code Online (Sandbox Code Playgroud)

在标准散点图上,您可以将模式设置为线条、标记和文本的任意组合。