【发布时间】:2021-01-26 15:55:08
【问题描述】:
我有下表作为熊猫:
>>>date hour plant1 plant2 plant3 plant4 ...
0 2019-06-23 07:00:00 251.2 232.7 145.1 176.7
1 2019-06-23 07:02:00 123.4 173.1 121.5 180.4
2 2019-06-23 07:04:00 240.1 162.7 140.1 199.5
3 2019-06-23 07:06:00 224.8 196.5 134.1 200.5
4 2019-06-23 07:08:00 124.3 185.4 132.3 190.1
...
我想以交互方式绘制每个植物(每列)以创建包含所有植物列的线图。
只用 plotly 绘制一条线对我有用:
import plotly.express as px
fig = px.line(df, x=df.iloc[:,2], y=df.iloc[:,3])
fig.show()
但是当我尝试使用 iloc 绘制所有列并像这样放置所有列时它失败了:
fig = px.line(df, x=df.iloc[:,2], y=df.iloc[:,3:])
ValueError:所有参数的长度应该相同。的长度 列参数
df[wide_variable_0]是 2814,而 先前处理的参数 ['x'] 是 201
我知道 for plotly 不理解我的 iloc 输入来单独绘制每一列。
我如何告诉它将每列绘制为单独的行(例如,像这样,但使用我的数据和每列的行,因此我们将使用列名而不是国家/地区):
*此示例来自 plotly 手册 (https://plotly.com/python/line-charts/)
我的最终目标:将每列绘制为每个植物列的线
编辑:我也尝试过这里描述的熊猫,但是由于某种原因,当我这样尝试时,我得到了错误:
dfs['2019-06-23'].iloc[:,2:].plot(kind='line')
>>>ImportError: matplotlib is required for plotting when the default backend "matplotlib" is selected.
但是当我“改变顺序”时:
plt.plot(df.iloc[:,2:])
它可以工作,但不是交互式的。
【问题讨论】:
标签: python pandas matplotlib plotly plotly-python