使用 Python 滑动 window 图

Sliding window plot using Python

我想绘制 1000 的滑动 window 中的位置数和每个 20 的步长示例 (A-D).

解读:

我已经在 bashR 和其他方面测试了十几个工具,但我正在寻找 Python 解决方案。
请多多指教。

#This is an example of my data:
window = 1000
step = 20

# Example of dataframe
POSITION        A       B       C       D
1250            1       1       1       1 
1750            NA      1       NA      1
1786            1       NA      1       1
1812            1       1       1       1
1855            1       1       1       1
1896            1       NA      1       NA
2635            NA      1       1       1
1689            1       1       NA      NA
3250            1       1       1       1
3655            1       NA      1       1
3589            NA      1       1       1

我正在寻找这样的东西:

任何帮助将不胜感激!

我会尝试使用滚动计数,然后按步骤划分。之后你可以堆叠 df 以使用 seaborn lineplot 的 hue 参数。

import pandas as pd
import numpy as np
import seaborn as sns
df = pd.DataFrame({'POSITION': [1250,
  1750,
  1786,
  1812,
  1855,
  1896,
  2635,
  1689,
  3250,
  3655,
  3589],
 'A': [1.0, np.nan, 1.0, 1.0, 1.0, 1.0, np.nan, 1.0, 1.0, 1.0, np.nan],
 'B': [1.0, 1.0, np.nan, 1.0, 1.0, np.nan, 1.0, 1.0, 1.0, np.nan, 1.0],
 'C': [1.0, np.nan, 1.0, 1.0, 1.0, 1.0, 1.0, np.nan, 1.0, 1.0, 1.0],
 'D': [1.0, 1.0, 1.0, 1.0, 1.0, np.nan, 1.0, np.nan, 1.0, 1.0, 1.0]})



window = 5
step = 2

df = df.set_index('POSITION').rolling(window).count().reset_index().iloc[::step, :]    
df = df.melt(id_vars='POSITION', value_vars=['A','B','C','D'], value_name='polym', var_name='chromop')    
sns.lineplot(data=df, x='POSITION',y='polym',hue='chromop')