【问题标题】:How can I create a plot of stacked lines in python?如何在 python 中创建堆积线图?
【发布时间】:2020-03-21 02:02:58
【问题描述】:

我有 300 个单个细胞在 200 个时间步长的荧光值。我想将它们全部绘制在一个堆叠在另一个之上的同一个图形上。我不想绘制堆积面积图。下面的图像是我正在寻找的,但本质上它是每个单元格的数据绘制在其自己的单独 y 轴上,所有单元格都具有相同的 x 轴。

【问题讨论】:

  • 您的数据是什么样的?时间步长作为索引,单元格作为列?
  • 没错。我目前有一个熊猫数据框,其中时间步长作为索引,每个单元格作为一列。
  • 我要么创建共享 x 轴的子图,要么为每个数据集的 y 值添加一个偏移值以强制分离。

标签: python pandas matplotlib data-visualization seaborn


【解决方案1】:

python 中的主要绘图工具(与 pandas 一起使用)是 matplotlib(较旧)和 seaborn(较新且更小)。

查看 seaborn 的文档 (https://seaborn.pydata.org/tutorial/axis_grids.html) 和食谱页面 (https://python-graph-gallery.com/122-multiple-lines-chart/) 对于多组分复合图,您可以像这样显示您的荧光数据:

# libraries
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# Data
df=pd.DataFrame({'x': range(100), 
                 'trace1': np.random.randn(100), 
                 'trace2': np.random.randn(100)+10, 
                 'trace3': np.random.randn(100)+20})

# multiple line plot
plt.plot( 'x', 'trace1', data=df, marker='', color='black', linewidth=2)
plt.plot( 'x', 'trace2', data=df, marker='', color='black', linewidth=2)
plt.plot( 'x', 'trace3', data=df, marker='', color='black', linewidth=2, label="GluK1c")
plt.legend()

我不喜欢那种 hack(向每个轨迹的 y 值添加数字),因为应该有一种方法可以偏移您的 y 轴值在matplotlib 内,但我在谷歌搜索时找不到该选项。

在这种情况下,因为您想要极简的黑线迹线(神经科学期刊所期望的),所以 matplotlib 和 seaborn 具有可比性。

有关大量图例位置/格式选项,请参阅https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.legend.html

我希望我在实验室工作时拥有这些工具。会比我当时做的更好。

【讨论】:

    【解决方案2】:

    你可以这样做,例如:

    your_df.plot(subplots=True, layout=(10,30));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多