Мне трудно даже сформулировать вопрос -
Думаю, будет проще, если я просто покажу свою цель: Возьмите этот пример:
require(tidyverse)
df <- data.frame(planet = rep(c("mars", "jupiter"), each = 10),
date = seq(as.Date("2020-01-01"), as.Date("2020-01-10"), length.out = 10) %>% rep(2),
someNumbers = c(1:10, 6:15)
)
df
planet date someNumbers
1 mars 2020-01-01 1
2 mars 2020-01-02 2
3 mars 2020-01-03 3
4 mars 2020-01-04 4
5 mars 2020-01-05 5
6 mars 2020-01-06 6
7 mars 2020-01-07 7
8 mars 2020-01-08 8
9 mars 2020-01-09 9
10 mars 2020-01-10 10
11 jupiter 2020-01-01 6
12 jupiter 2020-01-02 7
13 jupiter 2020-01-03 8
14 jupiter 2020-01-04 9
15 jupiter 2020-01-05 10
16 jupiter 2020-01-06 11
17 jupiter 2020-01-07 12
18 jupiter 2020-01-08 13
19 jupiter 2020-01-09 14
20 jupiter 2020-01-10 15
Если я строю график
ggplot(df, aes(date, someNumbers, group = planet)) + geom_bar(stat = "identity", position = "dodge", aes(fill = planet))
![enter image description here](https://i.stack.imgur.com/6rvwb.png)
Я могу видеть, что две планеты следуют одинаковой последовательности в someNumbers
. Я хотел бы переместить все mars
синих полос влево на 4-5 дней, чтобы я мог легко сравнить последовательность визуально.
Я могу сделать это следующим образом:
df.mars <- subset(df, planet == "mars")
df.jupiter <- subset(df, planet == "jupiter")
df.mars$date <- df.mars$date - 5 #subset mars and manually minus 5
bind_rows(df.mars, df.jupiter) %>% ggplot(aes(date, someNumbers, group = planet)) + geom_bar(stat = "identity", position = "dodge", aes(fill = planet))
![enter image description here](https://i.stack.imgur.com/1t4lY.png)
Однако я на самом деле изменяю базовые значения date
для mars
.
Могу ли я добиться того же самого, фактически не меняя базовые значения date
и просто сдвинув все mars
geom_bar()
влево или вправо на произвольную величину? В идеале у меня было бы две метки по оси X: одна для mars
, одна для jupiter
.
Rant: Этот вопрос возник, когда я играл с набором данных covid19. Я строил гистограммы, сгруппированные по странам с:
Y-axis = #cases
X-axis = Date
Я хотел переместить все свои USA
бары влево на n Days
, чтобы я мог сделать заявление в соответствии с трендом США следует за Италией с n Days
позади "