gpt4 book ai didi

python - 为什么 matplotlib .plot(kind ='bar' ) plot 与 .plot() 如此不同

转载 作者:行者123 更新时间:2023-12-05 09:13:06 27 4
gpt4 key购买 nike

这可能是一个非常愚蠢的问题,但是当使用 .plot() 绘制 Pandas DataFrame 时,它​​非常快并且会生成具有适当索引的图形。一旦我尝试将其更改为条形图,它似乎就失去了所有格式并且索引变得疯狂。为什么会这样?有没有简单的方法来绘制与折线图格式相同的条形图?

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame()
df['Date'] = pd.date_range(start='01/01/2012', end='31/12/2018')
df['Value'] = np.random.randint(low=5, high=100, size=len(df))
df.set_index('Date', inplace=True)

df.plot()
plt.show()

df.plot(kind='bar')
plt.show()

df.plot()

df.plot(kind='bar'

更新:为了进行比较,如果我将数据放入 Excel,然后创建一个线图和一个条形图(“柱”),它会立即转换该图并保持轴标签与线图相同。如果我尝试用多年的日常数据在 Python 中生成许多(数千个)条形图,这需要很长时间。在 Python 中是否有一种等效的方法来执行此 Excel 转换?

Excel plots

最佳答案

Pandas 条形图在本质上是分类的;即每个栏都是一个单独的类别,并且有自己的标签。 pandas 目前无法绘制数字条形图(以与线图相同的方式)。

相比之下,如果输入数据是数字或日期,则 matplotlib bar 绘图是数字的。所以

plt.bar(df.index, df["Value"])

产生

enter image description here

但请注意,由于您的数据框中有 2557 个数据点,仅分布在数百个像素上,因此实际上并未绘制所有条形图。反过来说,如果您希望显示每个条形图,则在最终图像中它需要一个像素宽。这意味着每边有 5% 的边距,你的图形需要超过 2800 像素宽,或者是矢量格式。

因此,与其显示每日数据,不如首先汇总为月度或季度数据更有意义。

关于python - 为什么 matplotlib .plot(kind ='bar' ) plot 与 .plot() 如此不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704699/

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