【问题标题】:How to plot dataframe values on x-axis and indices on y-axis如何在 x 轴上绘制数据框值并在 y 轴上绘制索引
【发布时间】:2016-11-19 18:41:32
【问题描述】:

我有两个问题,但解决其中一个问题忽略了解决另一个问题。

我有一个带有温度值的数据框,例如多个(例如 3 个)高度的 6 个位置。高度被锁定,因此是数据框的索引。示例(与数字不符):

  place1 place2 place3 place4 place5 place6
1     12     10      9     13     10      4
2     18     15     13     14      8      8
3     21      9     16     15     11     12

我想将每个地方的温度绘制为高度的函数,但是!我希望高度(索引)沿着 Y 轴而不是 x 轴 .因此,我不想让图表“从左到右”运行,而是“从下到上”运行。

如果我只是Plot a DataFrame,它看起来有点像这样:索引(高度)沿着 X 轴而不是 Y 轴运行。 - 注意值与表格不匹配!!

ax.plot(data)

转置数组不起作用:仍然是沿 Y 轴的值可以灵活地锁定 X 值。

我希望它look like this 沿 X 轴变化温度,沿 Y 轴锁定高度。 (请不要打扰不同的数据集;关键是图表是“垂直的”而不是水平的):

ax.errorbar(temp, H, xerr=tempError, ecolor='gray')

后者是通过绘制简单的 python 列表制成的,这对我有用。但是,我的数据集很大,因此使用 DataFrames 会很好,最重要的是,我想使用 fill_betweenx 来显示 std 而不是图中当前显示的错误栏。

所以我实际上是在寻找这两个问题中的任何一个的答案:

  1. 如何从 DataFrame 中翻转绘图(即不转置 df,但使轴交换)?
  2. 或者,我如何在不使用 DataFrames 的情况下使用 fill_betweenx

【问题讨论】:

  • NOTE that values don't match table!! 是什么意思。

标签: python pandas matplotlib plot dataframe


【解决方案1】:

使用 pyplot.plot 并按照您想要的方式构建 x 和 y。

from matplotlib import pyplot as plt
plt.plot(df.place1, df.index, df.place2, df.index, df.place3, df.index,
         df.place4, df.index, df.place5, df.index, df.place6, df.index)
plt.show()
plt.close()

或者更笼统一点:

for name, series in df.iteritems():
    plt.plot(series, df.index)
plt.show()
plt.close()

【讨论】:

    【解决方案2】:

    这是问题编号的建议。 1

    plt.plot(data, range(number_of_heights))
    

    在你的例子中 number_of_heights 是 3

    【讨论】:

    • 简单看一下这个问题,您需要一个迭代,但它不在您的答案中?