r - 制作 ggplot2 图表,其中日期列具有不同的颜色
问题描述
我正在尝试绘制散点图并一直失败。我的数据df[1:10,]
如下所示:
# A tibble: 13 x 5
`Ticket Created` `Ticket Closed` `Case Owner` Frequency
<chr> <chr> <fct> <dbl>
1 NA NA Animal_Services 16395
2 NA NA Public_Works_Road_And_Bridges_16_60 6090
3 NA NA COM_Code_Enforcement 4099
4 NA 2017-02-06 COM_Code_Enforcement 123
5 NA 2015-09-07 COM_Code_Enforcement 96
6 NA 2015-03-12 Animal_Services 88
7 NA 2017-01-06 COM_Code_Enforcement 88
8 2014-07-04 2014-07-04 Public_Works_Road_And_Bridges_16_60 78
9 NA 2014-07-10 COM_Code_Enforcement 65
10 NA 2014-08-09 COM_Code_Enforcement 65
11 2013-11-03 2013-11-03 Public_Works_Road_And_Bridges_16_60 60
12 2014-07-01 2014-07-01 Public_Works_Road_And_Bridges_16_60 59
13 NA 2015-12-02 COM_Code_Enforcement 55
我需要一个图表,其中Ticket Created
和Ticket Closed
位于x-axis,不同颜色且 Frequency
位于y-axix。这就是我做ggplot的方式:
ggplot2::ggplot()+
geom_point(data= c, aes(lubridate::date(`Ticket Created`), Frequency,
color=destring(`Ticket Created`)))+
geom_point(data= c, aes(lubridate::date(`Ticket Closed`), Frequency,
color=destring(`Ticket Closed`)))+
theme_bw()+
scale_x_date(date_breaks = "1 month", date_labels = "%d %b %Y") +
ylim(0, 150)+
scale_alpha(guide = 'none')+
theme(plot.title = element_text(hjust = 0.5), legend.position = "top", legend.title = element_text(face = "bold.italic"),
axis.text.x=element_text(angle=60, hjust=1))+
facet_wrap(~`Case Owner`, ncol = 1, scales = "free_y")+
guides(fill= F)+
labs(x="Day",y= "Freq. of Closing", caption = "**distributed by month-year")+
ggtitle("Monthly Frequency of Ticket Closing by Case Owners, per Year")
Warning messages:
1: In destring(`Ticket Created`) : NAs introduced by coercion
2: In destring(`Ticket Created`) : NAs introduced by coercion
3: In destring(`Ticket Closed`) : NAs introduced by coercion
4: Removed 50 rows containing missing values
(geom_point).
5: Removed 22 rows containing missing values
(geom_point).
我被告知不要NAs
从数据中删除的原因是我们可以看到Case Owner
在同一天打开和关闭的票。我尝试了多种着色方法......包括我将日期列转换为整数并遵循这些帖子:
Scatter plot with ggplot2 colour by dates
dput() 是这个,如果你想看的话。如果我可以将两列以不同的颜色显示,我将不胜感激,这样会更清楚。或者提示也会很有价值!
structure(list(`Ticket Created` = c(NA, NA, NA, NA, NA, NA, NA,
"2014-07-04", NA, NA, "2013-11-03", "2014-07-01", NA, "2013-04-04",
"2013-10-04", NA, "2013-09-01", NA, "2014-10-07", NA, "2013-04-02",
NA, NA, "2014-07-08", "2013-10-07", "2014-02-06", "2015-11-06",
"2014-09-07", "2014-11-06", NA, "2015-07-07", NA, "2013-08-05",
"2014-03-09", "2017-06-04", NA, "2014-01-05", "2014-06-01", NA,
"2014-03-07", "2013-05-11", "2014-01-07", "2014-11-03", "2015-08-07",
NA, NA, "2013-02-04", "2014-08-07", NA, NA, "2013-09-09", "2013-11-06",
NA, NA, NA, "2014-08-04", "2014-10-11", "2014-12-02", "2013-03-06",
"2013-05-02", NA, "2014-05-03", "2014-05-08", "2014-10-03", "2015-09-07",
NA, "2013-01-04", "2014-09-01", NA, NA, NA, "2013-06-05", "2013-12-06",
"2014-02-07", NA, NA, NA, "2013-12-08", "2014-10-01", "2014-11-08",
"2014-12-02", NA, "2013-04-03", "2013-08-08", "2013-11-02", "2014-01-10",
"2014-07-07", "2014-12-11", NA, NA, NA, "2014-03-04", "2014-12-09",
"2015-02-07", NA, NA, "2013-07-08", "2013-11-12", "2014-06-05",
"2014-10-02", "2014-12-05", "2015-01-09", "2015-09-12", "2016-09-02",
NA, NA, "2013-01-05", "2013-12-12", "2013-12-12", "2014-12-05",
"2015-02-09", "2016-05-05", "2016-07-06", "2016-12-04", "2016-12-10",
"2016-12-12", NA, NA, NA, NA, NA, "2013-01-10", "2013-09-12",
"2013-12-03", "2014-01-08", "2014-07-05", "2015-05-05", "2016-12-02",
"2017-07-09", NA, NA, NA), `Ticket Closed` = c(NA, NA, NA, "2017-02-06",
"2015-09-07", "2015-03-12", "2017-01-06", "2014-07-04", "2014-07-10",
"2014-08-09", "2013-11-03", "2014-07-01", "2015-12-02", "2013-04-04",
"2013-10-04", "2016-01-12", "2013-09-01", "2016-05-01", "2014-10-07",
"2017-08-04", "2013-04-02", "2014-02-09", "2015-02-02", "2014-07-08",
"2013-10-07", "2014-02-06", "2015-11-06", "2014-09-07", "2014-11-06",
"2017-08-05", "2015-07-07", "2015-09-03", "2013-08-05", "2014-03-09",
"2017-06-04", "2015-12-06", "2014-01-05", "2014-06-01", "2017-01-11",
"2014-03-07", "2013-05-11", "2014-01-07", "2014-11-03", "2015-08-07",
"2016-05-08", "2018-01-02", "2013-02-04", "2014-08-07", "2014-06-10",
"2014-12-06", "2013-09-09", "2013-11-06", "2014-03-01", "2014-11-06",
"2015-06-12", "2014-08-04", "2014-10-11", NA, "2013-03-06", "2013-05-02",
"2015-10-03", "2014-05-03", "2014-05-08", "2014-10-03", "2015-09-07",
"2013-04-04", "2013-01-04", "2014-09-01", "2014-03-06", "2014-06-12",
"2014-08-08", "2013-06-05", NA, "2014-02-07", "2014-07-05", "2016-02-08",
"2017-09-05", NA, NA, "2014-11-08", "2014-12-02", "2017-01-05",
"2013-04-03", "2013-08-08", "2013-11-02", "2014-01-10", "2014-07-07",
NA, "2013-04-09", "2016-08-01", "2017-02-05", NA, NA, "2015-02-07",
"2014-02-04", "2015-07-04", "2013-07-08", "2013-11-12", "2014-06-05",
NA, "2014-12-05", "2015-01-09", "2015-09-12", NA, "2014-06-03",
"2016-04-05", "2013-01-05", "2013-12-12", NA, NA, "2015-02-09",
NA, NA, NA, NA, NA, "2014-01-05", "2014-05-02", "2015-01-09",
"2015-02-08", "2017-11-01", "2013-01-10", "2013-11-12", "2013-12-03",
"2014-08-09", NA, "2015-05-05", NA, NA, "2013-01-08", "2015-03-02",
"2017-08-12"), `Case Owner` = structure(c(1L, 3L, 2L, 2L, 2L,
1L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 3L, 1L, 3L, 1L, 3L, 2L, 3L,
1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 2L, 3L, 3L, 3L, 1L, 3L,
3L, 2L, 3L, 3L, 3L, 3L, 3L, 1L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 1L,
2L, 1L, 3L, 3L, 1L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 2L,
2L, 1L, 3L, 1L, 3L, 2L, 2L, 2L, 1L, 1L, 3L, 3L, 1L, 3L, 3L, 3L,
3L, 3L, 1L, 2L, 1L, 1L, 3L, 1L, 3L, 1L, 1L, 3L, 3L, 3L, 1L, 3L,
3L, 3L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 1L, 1L, 3L, 1L, 3L, 2L, 1L, 3L, 1L, 2L, 1L, 1L, 2L), .Label = c("Animal_Services",
"COM_Code_Enforcement", "Public_Works_Road_And_Bridges_16_60"
), class = "factor"), Frequency = c(16395L, 6090L, 4099L, 123L,
96L, 88L, 88L, 78L, 65L, 65L, 60L, 59L, 55L, 54L, 53L, 51L, 50L,
50L, 49L, 48L, 47L, 47L, 46L, 45L, 44L, 42L, 42L, 41L, 41L, 41L,
40L, 40L, 39L, 39L, 39L, 39L, 38L, 37L, 37L, 36L, 35L, 35L, 35L,
35L, 35L, 35L, 34L, 34L, 34L, 33L, 32L, 32L, 32L, 32L, 32L, 31L,
31L, 31L, 30L, 30L, 30L, 29L, 29L, 29L, 29L, 29L, 28L, 28L, 28L,
28L, 28L, 27L, 27L, 27L, 27L, 27L, 27L, 26L, 26L, 26L, 26L, 26L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 24L, 24L, 24L, 24L,
24L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 22L, 22L,
22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L)), row.names = c(NA,
-132L), class = c("tbl_df", "tbl", "data.frame"))
解决方案
如果您将数据修改为长格式,它应该可以工作:
library(tidyr)
c1 <-
c %>%
pivot_longer(cols = c(`Ticket Created`, `Ticket Closed`), names_to = "tick", values_to = "date")
c1
ggplot2::ggplot()+
geom_point(data= c1, aes(lubridate::date(date), Frequency, colour= tick))+
theme_bw()+
scale_x_date(date_breaks = "1 month", date_labels = "%d %b %Y") +
ylim(0, 150)+
scale_alpha(guide = 'none')+
theme(plot.title = element_text(hjust = 0.5), legend.position = "top", legend.title = element_text(face = "bold.italic"),
axis.text.x=element_text(angle=60, hjust=1))+
facet_wrap(~`Case Owner`, ncol = 1, scales = "free_y")+
guides(fill= F)+
labs(x="Day",
y= "Freq. of Closing",
caption = "**distributed by month-year",
colour = "Ticket type")+
ggtitle("Monthly Frequency of Ticket Closing by Case Owners, per Year")
结果是:
推荐阅读
- java - 使用批处理侦听器的安全方法
- dart - Flutter 中的状态管理
- c# - 在 TCP 级别拦截 WCF 调用
- json - 如何使用机器人框架处理http请求中的JSON数组
- powershell - GPO 启动 powershell 脚本未执行
- sql-server - 触发器执行时子查询返回超过 1 个值
- php - 没有librabbitmq,同时安装rabbitmq pecl brew php
- vim - Vim Execute Nohlsearch Not Working in Function
- css - 需要拖动条来溢出并适合 div 的全宽吗?
- android - java.lang.NoClassDefFoundError: Failed resolution of: App class on Lenovo K4 Note running android 6, API 23