Python Pandas 绘制多索引指定 x 和 y

标签 python pandas plot

下面是一个示例 DataFrame .

           joaquin     manolo
xx 0  0.000000e+00  44.000000
   1  1.570796e+00  52.250000
   2  3.141593e+00  60.500000
   3  4.712389e+00  68.750000
   4  6.283185e+00  77.000000
yy 0  0.000000e+00  37.841896
   1  2.078796e+00  39.560399
   2  5.292179e-17  41.026434
   3 -8.983291e-02  42.304767
   4 -4.573916e-18  43.438054

可以看到,行索引有两个级别,['xx', 'yy'][0, 1, 2, 3, 4] 。我要调用DataFrame.plot()这样它将产生两个子图,一个子图为 joaquin和一个 manolo ,以及我可以指定使用 data.loc["xx", :] 的位置对于域数据并使用 data.loc["yy", :]为纵坐标数据。此外,我希望可以选择在 matplotlib.axes._subplots.AxesSubplot 的列表(或数组)中提供应在其上绘制图的子图。实例,例如那些可以由 DataFrame.hist() 返回的实例方法。如何做到这一点?

生成上述数据

以防万一您想知道,下面是我用来生成数据的代码。如果有一种更简单的方法来生成这些数据,我很想知道作为旁注。

joaquin_dict = {}
xx_joaquin = numpy.linspace(0, 2*numpy.pi, 5)
yy_joaquin = 10 * numpy.sin(xx_joaquin) * numpy.exp(-xx_joaquin)
for i in range(len(xx_joaquin)):
    joaquin_dict[("xx", i)] = xx_joaquin[i]
    joaquin_dict[("yy", i)] = yy_joaquin[i]

manolo_dict = {}
xx_manolo = numpy.linspace(44, 77, 5)
yy_manolo = 10 * numpy.log(xx_manolo)
for i in range(len(xx_manolo)):
    manolo_dict[("xx", i)] = xx_manolo[i]
    manolo_dict[("yy", i)] = yy_manolo[i]

data_dict = {"joaquin": joaquin_dict, "manolo": manolo_dict}
data = pandas.DataFrame.from_dict(data_dict)

最佳答案

只需使用 for 循环:

fig, axes = pl.subplots(1, 2)
for ax, col in zip(axes, data.columns):
    data[col].unstack(0).plot(x="xx", y="yy", ax=ax, title=col)

输出:

enter image description here

关于Python Pandas 绘制多索引指定 x 和 y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39790041/

相关文章:

python - 如何将 Pandas 数据框列连接到可迭代列表中?

python - 去掉默认的00 :00:00 time in daily bar plots?

r - directlabels geom_dl() 中的标签大小

r - 如何在ggplot2中抖动线条

python - for 循环生成多个 polyfit 散点图

python - 裁剪具有相同宽高比的旋转图像

python - Matplotlib 窗口出现在后面?

python - 使用 Selenium 查找 div 中的索引元素

python - 如何按字典顺序对文件路径进行排序? Python

python - 如何从列中删除少于 3 个字符的单词