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

标签 python plotly plotly-python plotly-express

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

数据框是否必须有索引作为列才能用作x轴?我可以不直接使用x轴索引吗? 如何在同一 x 轴的 y 轴上添加多个迹线?

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

另外,网上也有一些类似的帖子,最接近的是 this : 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()

绘图:

enter image description here

最佳答案

简短回答:

fig = px.line(df, x='Date', y=df.columns[1:-6])

其中 df.columns 是作为列表返回的列的列名称,或者使用例如 df.columns[1:-6] 的列的子集

<小时/>

详细信息

您的代码工作正常,但如果您特别不想将(有点费力的) add_trace() 函数应用于每一行,则可以使用 px.line() 。这过去需要您将数据从 wide to long 格式转换。但现在不再是这样了,所以只需定义一个索引并命名您想要绘制的列即可。或者通过例如 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()

plotly :

enter image description here

如果您想知道如何对长格式的数据执行相同的操作,也可以使用 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()

关于python - 如何在 Python 中使用 Plotly Express 在同一 y 轴上绘制多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58142058/

相关文章:

python - Plotly:如何将水平滚动条添加到 plotly 表达图形?

javascript - 如何过滤 json 并获取在 js 中创建线图的平均值?

python - 在 Python 中的绘图中创建自定义刻度标签

python - 设置 Plotly Bar graph x 轴的对齐方式

python - Plotly Choropleth Map Plots 的下拉菜单

python - 在 Django 上的测试执行中避免将 django.core.mail.outbox 作为电子邮件后端

python - 通过迭代对数据帧字典进行子集化

python - 从 dbf 文件中选择字段

python - 为什么 Django Rest Framework 不显示发布的纬度?

plotly - 在散点图上添加标记