【问题标题】:Changing xticks in a pandas plot改变熊猫情节中的 xticks
【发布时间】:2018-09-06 10:53:13
【问题描述】:

我正在尝试在直方图中按小时绘制活跃用户数。

这是我的代码:

import pandas as pd
import datetime
from matplotlib import pyplot as plt

data =  [datetime.datetime(2000, 1, 1, 11, 5, 44, 233144), datetime.datetime(2000, 1, 1, 12, 5, 45, 175807), ..]

df = pd.DataFrame(data,  columns=['Users'])
df.index = pd.to_datetime(df['Users'])
df.groupby(pd.TimeGrouper(freq='60Min')).count().plot(kind='bar', title = 'Activity by Hour', figsize = (10,8))

plt.xlabel('Time')
plt.ylabel('Number of Users')
plt.show()

这很好用,但我最初只得到一天中的时间数据,而不是日期(我在 2000 年 1 月 1 日添加到每个条目中,因为我发现的关于绘制这个的所有内容都使用了 datetimesdatetime.time 格式'不起作用;即不能使用pf.to_datetime() 转换为正确的格式,除非您有datetime)。

现在所有的 xtick 标签都是2000_01_01 00:00:002000_01_01 01:00:00 等。

我想将它们更改为只是时间(即获取它们,然后切断字符串的第一部分),但我不知道如何做到这一点。

【问题讨论】:

  • 您可以通过在编辑器中缩进四个空格将代码行组合在一起

标签: python python-3.x pandas


【解决方案1】:

我认为您应该使用add_subplot() 命令,它可以让您更好地控制图形并将plt API 命令限制为意图图形。

我添加了几行关于使用子图和更改 xticklabels 的内容。

import pandas as pd
import datetime
from matplotlib import pyplot as plt

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(1, 1, 1)

data =  [datetime.datetime(2000, 1, 1, 11, 5, 44, 233144), datetime.datetime(2000, 1, 1, 12, 5, 45, 175807)]
df = pd.DataFrame(data,  columns=['Users'])
df.index = pd.to_datetime(df['Users'])

plotting_data = df.groupby(pd.TimeGrouper(freq='60Min')).count()
plotting_data.plot(ax=ax, kind='bar')

ax.set_title('Activity by Hour')
ax.set_xlabel('Time')
ax.set_ylabel('Number of Users')
ax.set_xticklabels(list(plotting_data.index.time))

为了明确起见,我更喜欢自己使用子图实例方法,尤其是在处理多个子图时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2016-11-15
    • 1970-01-01
    • 2016-03-24
    • 2021-11-25
    • 2014-06-21
    • 1970-01-01
    • 2019-03-31
    相关资源
    最近更新 更多