首页 > 解决方案 > 列名和绘图中的分组字符串

问题描述

可重现:

 nan = np.NaN
    bynote = {'bynote_n1_trial_ms': {0: -18963961,
  1: 31992270,
  2: -13028311,
  3: 31992270,
  4: -13028311,
  5: -13028311},
 'bynote_n2_trial_ms': {0: nan,
  1: -13028311.0,
  2: nan,
  3: nan,
  4: nan,
  5: nan},
 'bynote_n3_trial_ms': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan},
 'n1': {0: 60, 1: 60, 2: 60, 3: 40, 4: 40, 5: 30},
 'n2': {0: nan, 1: 40.0, 2: 40.0, 3: nan, 4: 30.0, 5: nan},
 'n3': {0: nan, 1: nan, 2: 30.0, 3: nan, 4: nan, 5: nan}}

    bynote = pd.DataFrame().from_dict(bynote)

我想绘制一个图表,其中列 n1、n2 等是 x 值,而 bynote_n1_trial_ms、bynote_n2_trial_ms 等是相应的 y 值。

我应该以某种方式对一个字符串(即 n1 等)进行分组,或者我该怎么做?

编辑:

在此处输入图像描述

每行代表一个单独的图,其中左侧 DF 为 y,右侧为 x。

标签: pythonpandas

解决方案


我相信可以单独使用每个 DataFrame :

df1 = bynote.iloc[:, 3:]
df2 = bynote.iloc[:, :3]

因此,通过压缩列使用循环plt.plot()

import matplotlib.pyplot as plt

for x, y in zip(df1.columns, df2.columns):
    plt.plot(df1[x], df2[y])

plt.show()

编辑:

for x, y in zip(df1.columns, df2.columns):
    plt.figure()
    plt.plot(df1[x], df2[y])

plt.show()

推荐阅读