Выравнивание точек geom_jitter по оси x и обработка y как частоты - PullRequest
1 голос
/ 11 декабря 2019

Это немного странный вопрос, но он идет ...

Я хочу сделать несколько графиков, используя geom_jitter, где я нанесу категориальную переменную на оси x и нанесу y как отдельные точки данных на прямойлиния. Я также хочу, чтобы точки данных были выровнены по вертикали по каждой категории на оси х.

На данный момент у меня есть что-то вроде этого:

y <- rep(1:5, each = 4)
x <- rep(c("1", "2", "3", "4", "5"), each = 4)
df <- cbind(y, x)
df <- as.data.frame(df)
df$y <- as.numeric(df$y)

p <- ggplot(df, aes(x, y))
p + geom_jitter(shape = 4, color = 'darkred', width = 0, height = 1, size = 5, alpha = 1)

jittered plot

, что дает мне этот сюжет.

Как уже упоминалось, я бы хотел, чтобы точки данных были выровнены по вертикали и равноудалены друг от друга.

Кто-нибудь знает, возможно ли это?

По сути, я хочу лечить вас. немного похоже на частоту в точечном графике.

Большое спасибо!


Я забыл упомянуть, что я также хотел бы, чтобы точки совпали по горизонтали, чтобы график выглядел какчастотная гистограмма.

1 Ответ

2 голосов
/ 11 декабря 2019

Для этого вы хотите использовать пакет ggbeeswarm .

library(ggplot2)
library(ggbeeswarm)

y <- rep(1:5, each = 4)
x <- rep(c("1", "2", "3", "4", "5"), each = 4)
df <- cbind(y, x)
df <- as.data.frame(df)
df$y <- as.numeric(df$y)

p <- ggplot(df, aes(x, y))
p + geom_beeswarm(shape = 4, color = 'darkred', size = 4,
                  groupOnX = F, # only swarm on Y axis
                  cex = 2) # increase space between points

Этот график

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...