gpt4 book ai didi

python - 如何根据不同的数据帧部分绘制(plotly.express)多条线

转载 作者:行者123 更新时间:2023-12-04 08:06:16 29 4
gpt4 key购买 nike

例如,我有一个数据帧:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame(data = [{'key': '1', 'value': '1', 'metadata': '3'}, {'key': '2', 'value': '2', 'metadata': '3'}, {'key': '1', 'value': '3', 'metadata': '3'}, {'key': '2', 'value': '4', 'metadata':
...: '3'}])

In [3]: df
Out[3]:
key value metadata
0 1 1 3
1 2 2 3
2 1 3 3
3 2 4 3
我想用“键”分割 df,即
In [4]: df_list = [d for _, d in df.groupby(['key'])]

In [5]: df_list
Out[5]:
[ key value metadata
0 1 1 3
2 1 3 3,
key value metadata
1 2 2 3
3 2 4 3]
现在我有 N (2) 的列表 dataFrame s 基于唯一键的数量。如何使用 plotly 绘制此图?
我可以
In [6]: import plotly.express as px

In [7]: fig = px.line(df_list[0])
但我怎样才能添加其他行? plotly.express.Figure没有 add_line方法...

最佳答案

运行plotly.express西港岛线返回plotly.graph_objs._figure.Figure对象。这同样适用于plotly.graph_objectsgo.Figure()。因此,使用plotly Express,您可以添加行或使用痕迹建立一个数字后:

fig.add_trace(go.Scatter)
或者:
fig.add_scatter()
其他选项是:
fig.add_area()
fig.add_bar()
build fig后,您可以运行 dir(fig)了解更多信息。
因此,在一个数据帧像这样:
   2021  2022  2023
0 0 0 0
1 0 -1 -2
2 -1 -1 -3
3 -1 -2 -2
4 -1 -1 -3
您可以在线/跟踪添加到使用现有的数字:
fig.add_trace(go.Scatter(x = df.index, y = df['2023']))
如果您希望保留在字典中的数据子集的控制,一个方法来增加若干痕迹是这样的:
extra = {'2024': df['2024'],
'2025': df['2025']}

for k, v in extra.items():
fig.add_scatter(x=v.index, y = v, name = k + ' from dict' )
enter image description here
完整代码:
import pandas as pd
import numpy as np
import plotly
import plotly.express as px
import plotly.graph_objects as go

# data
np.random.seed(1)
start = 2021
ncols = 6
nrows = 1000
cols = [str(i) for i in np.arange(start, start+ncols)]
df = pd.DataFrame(np.random.randint(-1,2, (nrows,ncols)), columns = cols).cumsum()
df.iloc[0] = 0

# figure
fig = px.line(df, x=df.index, y=cols[:-4])
fig.update_layout(template = 'plotly_dark')

# fig.add_trace(go.Scatter(x = df.index, y = df['2023'], name = '2023 = added trace'))

fig.add_scatter(x = df.index, y = df['2023'], name = '2023 from add_trace')


extra = {'2024': df['2024'],
'2025': df['2025']}

for k, v in extra.items():
fig.add_scatter(x=v.index, y = v, name = k + ' from dict' )

fig.show()

关于python - 如何根据不同的数据帧部分绘制(plotly.express)多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66207084/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com