【问题标题】:Python Change axis on Multi Histogram plot多直方图上的Python更改轴
【发布时间】:2019-01-03 11:11:56
【问题描述】:

我有一个 pandas 数据框 df,我为其绘制了一个多直方图,如下所示:

df.hist(bins=20)

这给了我一个看起来像这样的结果(是的,这个例子很丑,因为每个直方图只有一个数据,抱歉):

我的数据框的每个数字列都有一个子图。

现在我希望我的所有直方图都有一个介于 0 和 1 之间的 X 轴。我看到 hist() 函数采用 ax 参数,但我无法使其工作。 这怎么可能?

编辑:

这是一个最小的例子:

import pandas as pd
import matplotlib.pyplot as plt

myArray = [(0,0,0,0,0.5,0,0,0,1),(0,0,0,0,0.5,0,0,0,1)]

myColumns = ['col1','col2','col3','co4','col5','col6','col7','col8','col9']

df = pd.DataFrame(myArray,columns=myColumns)

print(df)
df.hist(bins=20)

plt.show()

【问题讨论】:

  • 所以您只想更改 x 轴的标签?
  • 在上面的例子中,我希望所有 X 轴都在 0 和 1 之间。所以在“蓝条”为 0 的情况下,它应该显示在直方图的左侧,对于 1 的条,它应该显示在左侧,对于 0.5,它应该显示在直方图的中间。

标签: python pandas


【解决方案1】:

这是一个可行的解决方案,但肯定不理想:

import pandas as pd
import matplotlib.pyplot as plt

myArray = [(0,0,0,0,0.5,0,0,0,1),(0,0,0,0,0.5,0,0,0,1)]

myColumns = ['col1','col2','col3','co4','col5','col6','col7','col8','col9']

df = pd.DataFrame(myArray,columns=myColumns)

print(df)
ax = df.hist(bins=20)
for x in ax:
    for y in x:
        y.set_xlim(0,1)

plt.show()

【讨论】:

  • 我得到了和你一样的解决方案。它可以工作,但我注意到一个奇怪的行为。直方图的条形可以有不同的宽度。例如使用myArray = [(0,0,0,0,0,0,0,0,0), (0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9)]
  • 奇怪,我不确定是什么导致了这种行为。如果此解决方案解决了您的问题,您能否将其标记为已回答? :)
猜你喜欢
  • 2020-12-26
  • 2013-04-16
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2014-03-17
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多