首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中创建条件轴标签

在python中创建条件轴标签
EN

Stack Overflow用户
提问于 2019-02-22 02:03:51
回答 1查看 239关注 0票数 0

我有一个这样的数据框架:

代码语言:javascript
复制
Status      hour
Cancelled   11
NA          11
Cancelled   22
NA          10
Cancelled   7
NA          6
NA          22
Cancelled   6

我想创建一个图表,如下所示,我想根据所选的时间段来标记x轴:

代码语言:javascript
复制
#   0-4 --> Mid Night
#   4-8 --> Early Morning
#   8-12 --> Morning
#   12-16 --> After noon
#   16-20 --> Evening
#   20-24 --> Night

预期图表(假设图表的橙色部分显示NA,蓝色部分显示已取消):

我完全不知道如何实现这一点,任何线索都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 03:01:48

要开始这个问题,您首先需要对每个时间间隔内出现的所有'Cancelled''nan'进行计数。但在此之前,我将设置一些数据:

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

df = pd.read_fwf(StringIO("""
Status      hour
Cancelled   1
Cancelled   11
NA          11
NA          13
Cancelled   22
NA          10
Cancelled   17
Cancelled   18
Cancelled   19
Cancelled   7
NA          6
NA          22
Cancelled   6
"""), header=1)

好了,现在我们可以循环遍历时间类别并进行计数

代码语言:javascript
复制
values = {}
for i in range(6):
    values[i] = {}

    status = df.loc[(df['hour'] > i*4) & (df['hour'] <= (i+1)*4), 'Status']

    values[i]['Cancelled'] = status.str.contains('Cancelled').sum()
    values[i]['nan'] = status.isnull().sum()

因此,做情节并不是很费力

代码语言:javascript
复制
fig, ax = plt.subplots(1, 1)

for i in range(6):
    ax.bar(i, values[i]["Cancelled"], color='C0')
    ax.bar(i, values[i]["nan"], color='C1', bottom=values[i]["Cancelled"])

ax.set_xticks(np.r_[:6])
ax.set_xticklabels(['Mid night',
                   'Early Morning',
                   'Morning',
                   'After noon',
                   'Evening',
                   'Night'], rotation=45)

fig.tight_layout()

这给了我以下几点:

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

https://stackoverflow.com/questions/54813501

复制
相关文章

相似问题

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