首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么matplotlib .plot(.plot=‘bar’)的绘图与.plot()如此不同

为什么matplotlib .plot(.plot=‘bar’)的绘图与.plot()如此不同
EN

Stack Overflow用户
提问于 2019-06-21 13:46:08
回答 2查看 13.7K关注 0票数 2

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

代码语言:javascript
复制
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()

更新:比较而言,如果我获取数据并将其放入Excel中,则创建一个线条图和一个条形(“列”)图,它将立即转换该绘图,并保留线条图的轴标签。如果我试图用Python生成许多(数千)条形图,并使用多年的每日数据,这需要很长的时间。是否有一种在Python中进行Excel转换的等效方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-21 15:07:10

熊猫酒吧情节在性质上是明确的;也就是说,每个酒吧都是一个单独的类别,而这些酒吧有自己的标签。绘制数字条形图(以同样的方式绘制线图)目前在熊猫中是不可能的。

相反,如果输入的数据是数字或日期,matplotlib bar图是数字的。所以

代码语言:javascript
复制
plt.bar(df.index, df["Value"])

产生

但是请注意,由于数据中有2557个数据点,分布在几百个像素上,所以并不是所有的条形图都是实际绘制的。相反地,如果你想要显示每个条形图,它需要在最后的图像中有一个像素宽。这意味着每边有5%的边距,你的图形需要超过2800像素宽,或者矢量格式。

因此,与其显示每日数据,不如先将数据汇总为月度或季度数据。

票数 4
EN

Stack Overflow用户

发布于 2019-06-21 13:48:06

默认的.plot()将所有数据点与直线连接起来,并生成一个线条图。

另一方面,.plot(kind='bar')将每个数据点绘制为一个离散条。要在x轴上获得正确的格式设置,您必须修改勾标后的绘图。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56704699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档