python - 如何有效地绘制大量线形,其中点两两相连?

标签 python plotly plotly-python

我需要用 plotly 绘制大量的线段.与所有点都可以连接的常规散点图相反,这里我只需要两两连接点。

我考虑了不同的选择:

  • 向绘图添加线条形状;显然比较慢
  • 创建大量只有两个点的线图

  • 有没有更合适的方法?可能是一个散点图,其中只有每隔几个点连接。

    我正在寻找一种有效的方法来在 Python 中生成绘图,同时也能获得良好的渲染性能。

    最佳答案

    此答案基于 Maximilian Peters 评论中的建议,以及 Jezraels 对 insert a new row after every nth row 的处理方法。 .

    一个关键部分还包括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()
    

    关于python - 如何有效地绘制大量线形,其中点两两相连?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723792/

    相关文章:

    python - 使用其顶点绘制三角形并使用plotly python 填充 3D 空间中的形状

    python - Plotly:如何计算并说明趋势线的上下 50%?

    python - 使用 Arduino 查找咖啡机上 LED 的状态?

    python - 我应该在哪里放置 Python 包的演示脚本?

    python - 无法导入 plotly.figure_factory

    python - 无法弄清楚为什么图表没有更新

    plotly - 如何在 Plotly 等值区域 map 中填写索马里兰的值?

    python - 设计朴素贝叶斯分类器时出现属性错误

    python - 在 Python 中使用随机模块的选择时出错

    r - 如何在 Shiny 的应用程序中使用 plotlyProxy() 与 ggplotly() 使绘图渲染得更快