我正在尝试按小时绘制汇总的条形图。
hourly <- data.frame(
hour = 0:23,
N = 7+0:23,
hour.mod = c(18:23, 0:17))
一天是从早上6点到早上6点,所以我添加了一个偏移量hour.mod,然后:
ggplot(hourly, aes(x = hour.mod, y = N)) +
geom_col() +
labs(x = "6am to 6am", y = "Count")
除了x轴刻度为0之外,它与标签相矛盾。在修补鳞片时:scale_x_discrete(breaks = c(6, 10, 14, 18, 22))
完全消失了鳞片;目前可以使用,但效果欠佳。
如何指定x轴从0或23以外的一个小时开始?有没有不创建偏移列的方法吗?我是新手,所以请假设您正在向乡村白痴解释。
答案 0 :(得分:2)
您没有说想看到的内容,但是很明显,您应该使用scale_x_continuous
并通过“手动”或一些简单的数学方法以某种方式移动标签:
ggplot(hourly, aes(x = hour.mod, y = N)) +
geom_col() +
labs(x = "6am to 6am", y = "Count") +
scale_x_continuous(breaks= c(0,4,8,12,16), labels = c(6, 10, 14, 18, 22) )
或者也许:
ggplot(hourly, aes(x = hour.mod, y = N)) +
geom_col() +
labs(x = "6am to 6am", y = "Count") +
scale_x_continuous(breaks= c(6, 10, 14, 18, 22)-6, # shifts all values lower
labels = c(6, 10, 14, 18, 22) )
可能需要使用模运算,在R中涉及使用%%
和%/%
:
1:24 %% 12
[1] 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0