gpt4 book ai didi

python - 为什么 pandas df.plot.bar() 不接受宽度数组?

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:31 27 4
gpt4 key购买 nike

根据 documentation , matplotlib 的 barbarh 接受单个值或一组宽度,每个条一个。我见过这样的例子。但是,当使用 pandas 包装器时它不起作用,并且堆栈跟踪表明检查 x 限制(分别为 barh 的 y 限制)的算法无法处理多个宽度。这是怎么回事?

import pandas as pd
import matplotlib.pyplot as plt

# Minimum reproducible bug
df = pd.DataFrame({'value': [3,5,4], 'width': [0.1, 0.5, 1.0]})
plt.close('all')
fig, ax = plt.subplots(1,3)
df.plot.barh(ax=ax[0], width=0.9, stacked=True) # Base case
df.plot.bar(ax=ax[1], width=df.width.values) # Throws error after drawing bars, before setting x-limits
df.plot.barh(ax=ax[2], width=df.width.values) # (Analogous to above)

最佳答案

所以我想明显的解决方法是直接使用 matplotlib,因为它可以按预期处理多个宽度/高度。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'value': [3,5,4], 'width': [0.1, 0.5, 1.0]})

fig, ax = plt.subplots(1,3)
ax[0].barh(df.index, df.value, height=df.width)
ax[1].bar(df.index, df.value, width=df.width)
ax[2].barh(df.index, df.value, height=df.width)
plt.show()

关于python - 为什么 pandas df.plot.bar() 不接受宽度数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50095188/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com