Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在ggplot中定义x轴上从早上6点到早上6点的日期?_R - Fatal编程技术网

R 如何在ggplot中定义x轴上从早上6点到早上6点的日期?

R 如何在ggplot中定义x轴上从早上6点到早上6点的日期?,r,R,我正在试着按小时做一个汇总的条形图 hourly <- data.frame( hour = 0:23, N = 7+0:23, hour.mod = c(18:23, 0:17)) 除此之外,0处的x轴比例与标签矛盾。在修补刻度时:scale\ux\udiscrete(breaks=c(6,10,14,18,22))使刻度完全消失;这一方法目前有效,但不是最优的 如何指定x轴从0或23以外的小时开始?有没有不创建偏移列的方法?我是新手,所以请假设你是在向村里的白痴解释 你没

我正在试着按小时做一个汇总的条形图

hourly <- data.frame(
  hour = 0:23,
  N = 7+0:23,
  hour.mod = c(18:23, 0:17))
除此之外,0处的x轴比例与标签矛盾。在修补刻度时:
scale\ux\udiscrete(breaks=c(6,10,14,18,22))
使刻度完全消失;这一方法目前有效,但不是最优的


如何指定x轴从0或23以外的小时开始?有没有不创建偏移列的方法?我是新手,所以请假设你是在向村里的白痴解释

你没有说你想看什么,但很明显,你应该使用
scale\u x\u 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

谢谢-此“手册”解决方案符合我的直接目的。这比使用scale_x_离散化使刻度消失要好得多,我之所以使用scale_x_离散化,是因为我记得在某个地方读到过,装箱计数是离散值。至于我想要完成的:相同的图表,但是
hour
只包含
hour
N
,没有手动添加的
hour.mod
。以某种方式将x轴0定义为第6小时,将向量的其余部分绘制为23,返回到第0小时并继续,直到再次达到第6小时。也就是说,早上6点是两端的“极限”——如果这有道理的话。在我脑子里,我把它当作一个圆形向量?旋转木马。
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