首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大熊猫条形图中的勾标重叠

大熊猫条形图中的勾标重叠
EN

Stack Overflow用户
提问于 2018-06-04 08:02:03
回答 1查看 4K关注 0票数 3

TL;DR:在熊猫中如何绘制一个条形图,使它的x轴刻度标签看起来像一个线状图?

我制作了一个间隔均匀的时间序列(每天一项),并且可以像这样很好地绘制它:

代码语言:javascript
复制
intensity[350:450].plot()
plt.show()

但是切换到条形图却造成了这种混乱:

代码语言:javascript
复制
intensity[350:450].plot(kind = 'bar')
plt.show()

然后,我直接使用matplotlib创建了一个条形图,但它缺少熊猫的漂亮日期、时间序列、滴答标签格式:

代码语言:javascript
复制
def bar_chart(series):
    fig, ax = plt.subplots(1)
    ax.bar(series.index, series)
    fig.autofmt_xdate()
    plt.show()

bar_chart(intensity[350:450])

以下是强度系列的摘录:

代码语言:javascript
复制
intensity[390:400]

2017-03-07    3
2017-03-08    0
2017-03-09    3
2017-03-10    0
2017-03-11    0
2017-03-12    0
2017-03-13    2
2017-03-14    0
2017-03-15    3
2017-03-16    0
Freq: D, dtype: int64 

我可以全身心地去做,完全用手来制作滴答标签,但我不想让熊猫做它的工作,做它在第一个数字中所做的事情,而是用一个酒吧的情节。那我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 09:46:50

熊猫酒吧的情节是绝对的情节。它们为每个类别创建一个滴答(+标签)。如果类别是日期,而这些日期是连续的,则可以将某些日期排除在外,例如,每五个类别只划分一个日期,

代码语言:javascript
复制
ax = series.plot(kind="bar")
ax.set_xticklabels([t if not i%5 else "" for i,t in enumerate(ax.get_xticklabels())])

相比之下,matplotlib条形图是数字图。在这里,一个有用的代码可以被应用,它标记每周,每月或任何需要的日期。

此外,matplotlib允许完全控制滴答位置及其标签。

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import dates

index = pd.date_range("2018-01-26", "2018-05-05")
series = pd.Series(np.random.rayleigh(size=100), index=index)

plt.bar(series.index, series.values)
plt.gca().xaxis.set_major_locator(dates.MonthLocator())
plt.gca().xaxis.set_major_formatter(dates.DateFormatter("%b\n%Y"))
plt.show()

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

https://stackoverflow.com/questions/50675920

复制
相关文章

相似问题

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