Plotly。如何有效地绘制大量的线型,其中的点是两两相连的?

问题描述 投票:1回答:1

我需要绘制一个非常多的线段,并将其与 plotly. 与常规的散点图相反,所有的点都可以连接起来,这里我只需要把两个点两两连接起来。

我考虑了不同的方案。

  • 在图中添加线型,显然相对较慢。
  • 绘制大量只有两个点的线段图。

会不会有更合适的方法?可能是一个单一的散点图,只有每隔几个点是相连的。

我在寻找一种高效的方法,既能在Python中生成图,又能获得良好的渲染性能。

python plotly
1个回答
2
投票

这个答案建立在Maximilian Peters评论中的建议,以及Jezraels的方法上。每隔一行就插入一条新的记录.

一个关键的部分还包括 fig.update_traces(connectgaps=False)

剧情。

enter image description here

完整的代码。

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

# dataframe, sample
np.random.seed(123)
cols = ['a','b','c', 'd', 'e', 'f', 'g']
X = np.random.randn(50,len(cols))  
df=pd.DataFrame(X, columns=cols)
df=df.cumsum()
df['id']=df.index

# dataframe with every nth row containing np.nan
df2 = (df.iloc[1::2]
         .assign(id = lambda x: x['id'] + 1, c = np.nan)
         .rename(lambda x: x + .5))
df1 = pd.concat([df, df2], sort=False).sort_index().reset_index(drop=True)
df1.loc[df1.isnull().any(axis=1), :] = np.nan
df1


# plotly figure
colors = px.colors.qualitative.Plotly
fig = go.Figure()

for i, col in enumerate(df1.columns[:-1]):
    fig.add_traces(go.Scatter(x=df1.index, y=df1[col],
                              mode='lines+markers', line=dict(color=colors[i])))

fig.update_traces(connectgaps=False)

fig.show()
© www.soinside.com 2019 - 2024. All rights reserved.