我制作了这张图:
它是使用以下代码生成的:
ggplot(June, aes(x=Date, y=Count, fill=Species)) +
geom_bar(position='dodge', stat='identity') +
theme(axis.text.x = element_text(angle=90, vjust=0.5))
数据样本在这里:
structure(list(Day = c("01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "02/06/17", "02/06/17", "02/06/17", "02/06/17",
"02/06/17", "02/06/17", "02/06/17", "02/06/17", "02/06/17", "02/06/17",
"02/06/17", "02/06/17", "02/06/17", "02/06/17"), Time = c("20:00",
"20:00", "20:00", "21:00", "21:00", "21:00", "22:00", "22:00",
"22:00", "23:00", "23:00", "23:00", "00:00", "00:00", "00:00",
"01:00", "01:00", "01:00", "02:00", "02:00", "02:00", "03:00",
"03:00", "03:00", "04:00", "04:00", "04:00", "05:00", "05:00",
"05:00", "20:00", "20:00", "20:00", "21:00", "21:00", "21:00",
"22:00", "22:00", "22:00", "23:00", "23:00", "23:00", "00:00",
"00:00"), Date = c("01/06/17 20:00", "01/06/17 20:00", "01/06/17 20:00",
"01/06/17 21:00", "01/06/17 21:00", "01/06/17 21:00", "01/06/17 22:00",
"01/06/17 22:00", "01/06/17 22:00", "01/06/17 23:00", "01/06/17 23:00",
"01/06/17 23:00", "01/06/17 00:00", "01/06/17 00:00", "01/06/17 00:00",
"01/06/17 01:00", "01/06/17 01:00", "01/06/17 01:00", "01/06/17 02:00",
"01/06/17 02:00", "01/06/17 02:00", "01/06/17 03:00", "01/06/17 03:00",
"01/06/17 03:00", "01/06/17 04:00", "01/06/17 04:00", "01/06/17 04:00",
"01/06/17 05:00", "01/06/17 05:00", "01/06/17 05:00", "02/06/17 20:00",
"02/06/17 20:00", "02/06/17 20:00", "02/06/17 21:00", "02/06/17 21:00",
"02/06/17 21:00", "02/06/17 22:00", "02/06/17 22:00", "02/06/17 22:00",
"02/06/17 23:00", "02/06/17 23:00", "02/06/17 23:00", "02/06/17 00:00",
"02/06/17 00:00"), Species = c("Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle",
"Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle",
"Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle",
"Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle"), Count = c(0L, 0L,
0L, 20L, 0L, 0L, 85L, 0L, 1L, 9L, 0L, 0L, 7L, 0L, 0L, 2L, 0L,
0L, 1L, 0L, 0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
22L, 0L, 0L, 38L, 0L, 0L, 162L, 2L, 0L, 146L, 5L)), row.names = c(NA,
-44L), class = "data.frame")
我想做的是按原样安排小时数,但将日期作为从20:00到23:00的拱形标签的次要位置,如下所示:
是否可以在ggplot2中执行此操作?
先谢谢您的帮助
您可以Date
通过软件包hours
功能从列中提取小时数lubridate
。初步的日期时间转换也可以使用此程序包完成。要将小时数据按所需顺序排列,可以使用factor
带有自定义levels
参数的函数。请参见下面的代码:
library(lubridate)
library(ggplot2)
June <- structure(list(Day = c("01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17", "01/06/17",
"01/06/17", "01/06/17", "02/06/17", "02/06/17", "02/06/17", "02/06/17",
"02/06/17", "02/06/17", "02/06/17", "02/06/17", "02/06/17", "02/06/17",
"02/06/17", "02/06/17", "02/06/17", "02/06/17"), Time = c("20:00",
"20:00", "20:00", "21:00", "21:00", "21:00", "22:00", "22:00",
"22:00", "23:00", "23:00", "23:00", "00:00", "00:00", "00:00",
"01:00", "01:00", "01:00", "02:00", "02:00", "02:00", "03:00",
"03:00", "03:00", "04:00", "04:00", "04:00", "05:00", "05:00",
"05:00", "20:00", "20:00", "20:00", "21:00", "21:00", "21:00",
"22:00", "22:00", "22:00", "23:00", "23:00", "23:00", "00:00",
"00:00"), Date = c("01/06/17 20:00", "01/06/17 20:00", "01/06/17 20:00",
"01/06/17 21:00", "01/06/17 21:00", "01/06/17 21:00", "01/06/17 22:00",
"01/06/17 22:00", "01/06/17 22:00", "01/06/17 23:00", "01/06/17 23:00",
"01/06/17 23:00", "01/06/17 00:00", "01/06/17 00:00", "01/06/17 00:00",
"01/06/17 01:00", "01/06/17 01:00", "01/06/17 01:00", "01/06/17 02:00",
"01/06/17 02:00", "01/06/17 02:00", "01/06/17 03:00", "01/06/17 03:00",
"01/06/17 03:00", "01/06/17 04:00", "01/06/17 04:00", "01/06/17 04:00",
"01/06/17 05:00", "01/06/17 05:00", "01/06/17 05:00", "02/06/17 20:00",
"02/06/17 20:00", "02/06/17 20:00", "02/06/17 21:00", "02/06/17 21:00",
"02/06/17 21:00", "02/06/17 22:00", "02/06/17 22:00", "02/06/17 22:00",
"02/06/17 23:00", "02/06/17 23:00", "02/06/17 23:00", "02/06/17 00:00",
"02/06/17 00:00"), Species = c("Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle",
"Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle",
"Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle",
"Soprano Pipistrelle", "Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle",
"Big bat sp.", "Common Pipistrelle", "Soprano Pipistrelle", "Big bat sp.",
"Common Pipistrelle", "Soprano Pipistrelle"), Count = c(0L, 0L,
0L, 20L, 0L, 0L, 85L, 0L, 1L, 9L, 0L, 0L, 7L, 0L, 0L, 2L, 0L,
0L, 1L, 0L, 0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
22L, 0L, 0L, 38L, 0L, 0L, 162L, 2L, 0L, 146L, 5L)), row.names = c(NA,
-44L), class = "data.frame")
June$posix <- dmy_hm(June$Date)
June$Day_2 <- dmy(June$Day)
June$hour <- factor(hour(June$posix), levels = unique(hour(June$posix)))
ggplot(June, aes(x=hour, y=Count, fill=Species)) +
geom_bar(position='dodge', stat='identity') +
theme(axis.text.x = element_text(vjust=0.5)) +
xlab(paste0(range(June$Day_2), collapse = " - "))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句