подгруппы для дискретной оси x в ggplot2 - PullRequest
2 голосов
/ 18 июня 2020

Я хотел бы создать подгруппу в ggplot2 (geom_point), что означает, что я хотел бы немного сместить дискретные значения x в соответствии с подгруппой (см. Рисунок).

Я мог бы добиться этого, изменив дискретные значения на непрерывные и добавив значение сдвига, зависящее от подгруппы (см. Рис. B), а затем вручную отрегулировать метки x. Но я подумал, что, вероятно, есть более элегантный способ решения проблем с интервалом и маркировкой. Ниже приведен минимальный пример, который, надеюсь, описывает то, что я имею в виду.

library(ggplot2)
set.seed(1)
df <- data.frame(
    ID =       rep(seq(1,8),2),
    group =    rep(LETTERS[1:4],4),
    subgroup = c(rep("a",8),rep("b",8)),
    value = runif(16)
)
df$xpos <- as.numeric(df$group)+(as.numeric(df$subgroup)/4)


ggplot(data=df, aes(x=group, y= value, color=subgroup))+
  geom_point()+
    ggtitle("How it is")

ggplot(data=df, aes(x=xpos, y= value, color=subgroup))+
  geom_point() +
    ggtitle("How I would like it (without adjusted xAxes Labels)")

enter image description here

1 Ответ

4 голосов
/ 18 июня 2020

Мы можем использовать position_dodge:

library(ggplot2)
ggplot(data=df, aes(x=group, y= value, color=subgroup))+
  geom_point(position=position_dodge(width=0.5))+
  ggtitle("How it is")

enter image description here


Data

set.seed(1)
df <- data.frame(
    ID =       rep(seq(1,8),2),
    group =    rep(LETTERS[1:4],4),
    subgroup = c(rep("a",8),rep("b",8)),
    value = runif(16)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...