首页 文章

ggplot排序顺序处理NA值

提问于
浏览
2

我的目标是创建服务请求的散点图 .
X轴将是请求的日期 .
X值将显示从最旧到最新,从左到右的日期 .
Y轴将显示分配给请求的优先级 .
我希望将Y值从最高优先级(即1)排序到最低 .
尚未优先排序的请求在该列中具有NA .

这是一个示例数据集(注意 - 原始数据文件id选项卡 - 在下面显示“NA”的位置没有值分隔,为清楚起见):

ID  Priority    DateCreated  
549 NA  2018-02-15  
548 NA  2018-02-15  
547 3   2018-02-13  
537 1   2018-01-17  
536 5   2018-01-17  
518 NA  2017-12-21  
509 3   2017-11-27  
500 2   2017-11-16  
486 NA  2017-10-04  
477 3   2017-08-08  
475 1   2017-09-14  
448 2   2017-07-21  
444 5   2017-07-14  
431 5   2017-06-30  
425 1   2017-06-21  
407 2   2017-05-26  
395 4   2017-05-09  
394 4   2017-05-09  
374 4   2017-04-27  
368 2   2017-04-21  
352 NA  2017-04-03  
328 4   2017-02-28  
308 NA  2017-02-28  
272 2   2016-10-05  
213 4   2016-05-19  
212 5   2016-05-19  
200 2   2016-04-26  
188 NA  2016-03-17

加载ggplot2和data.frame后,我用这段代码创建了图:

bl <- fread("backlog.txt")  
bl$DateCreated <- as.Date(bl$DateCreated, "%Y-%m-%d")  
bl$Priority <- as.integer(bl$Priority)  
ggplot(bl, aes(x = DateCreated, y = reorder(Priority, -Priority))) +  
 geom_text((aes(label = ID)))

如果您重现此图,您将看到优先级为NA的项目显示在顶部 . 为了向我的客户展示,如果它们出现在底部则更清楚 .
我想我可以用"magic number"(例如11)替换NA,但我更喜欢一种不那么笨重的解决方案 .
有人已经处理过类似的问题吗?

谢谢 .

1 回答

  • 3

    这也是一个解决方法,但我认为比设置一个“神奇数字”更可接受

    bl$DateCreated <- as.Date(bl$DateCreated, "%Y-%m-%d") 
    bl$Priority[is.na(bl$Priority)] <- "No Data Available"
    bl$Priority <- factor(bl$Priority,levels=c("No Data Available","1","2","3","4","5"))
    ggplot(bl, aes(x = DateCreated, y = Priority)) +  geom_text((aes(label = ID)))
    

    enter image description here

相关问题