Построение графиков указывает на формы / цвета по переменной?
Вероятно, есть очевидное решение, но я немного наивен с графикой. Я хотел бы иметь point_shape
а также point_fill
определяется вручную, чтобы указать, например, гендерные группы. Как бы я поступил так?
Другими словами, я хотел бы видеть, например, зеленые квадраты для женщин и синие треугольники для не женщин (в качестве произвольного примера). (Комментатор упомянул, что на графике нет никаких точек, но они есть при использовании текущей версии разработки ggridges.)
# Simulate data:
df <- data.frame(female = factor(sample(0:1, size = 500, replace = TRUE)),
intervention = factor(sample(0:1, size = 500, replace = TRUE))) %>%
dplyr::mutate(value = ifelse(female == "1", runif(n = 500, min = 0, max = 100),
rnorm(n = 500, mean = 50, sd = 20)))
# Draw plot:
df %>%
ggplot2::ggplot(aes(y = intervention)) +
ggridges::geom_density_ridges2(aes(x = value,
colour = "black",
fill = female),
scale = .7,
alpha = 0.6,
size = 0.25,
jittered_points = TRUE,
point_shape = 21,
point_size = 0.85,
point_fill = "black")
2 ответа
Автор пакета здесь. Происходит следующее: в общем случае вы хотите иметь возможность стилизовать цвет, размер и т. Д. Независимо от цвета линии, размера и т. Д. Однако стандартный ggplot не может этого сделать. Есть только один color
эстетический, например, который применяется ко всем точкам и линиям.
Чтобы обойти эту проблему, я создал новую эстетику point_color
, point_size
, point_shape
и т. д., которые относятся конкретно к точкам. Вы можете отобразить на них данные, как обычно. Тем не менее, ggplot не может создать для них шкалы, и поэтому я создал scale_discrete_manual()
(и несколько других шкал), которые вы можете использовать для определения соответствующих шкал.
Собрав все это вместе, вы получите что-то вроде этого:
# Draw plot:
df %>%
ggplot2::ggplot(aes(y = intervention)) +
ggridges::geom_density_ridges2(aes(x = value,
point_color = female,
point_fill = female,
point_shape = female,
fill = female),
scale = .7,
alpha = 0.6,
size = 0.25,
jittered_points = TRUE,
point_size = 0.85) +
ggplot2::scale_fill_manual(values = c("#A0FFA0", "#A0A0FF")) +
ggridges::scale_discrete_manual(aesthetics = "point_color", values = c("#00BF00", "#0000BF")) +
ggridges::scale_discrete_manual(aesthetics = "point_fill", values = c("#80FF80", "#8080FF")) +
ggridges::scale_discrete_manual(aesthetics = "point_shape", values = c(22, 24))
Мы не можем видеть точки с ggridges
версия в настоящее время доступна на CRAN.
Вы используете параметры, которые доступны только в разрабатываемой версииggridges
доступно на github:
library(tidyverse)
# Simulate data:
df <- data.frame(female = factor(sample(0:1, size = 500, replace = TRUE)),
intervention = factor(sample(0:1, size = 500, replace = TRUE))) %>%
dplyr::mutate(value = ifelse(female == "1", runif(n = 500, min = 0, max = 100),
rnorm(n = 500, mean = 50, sd = 20)))
# devtools::install_github("clauswilke/ggridges")
library(ggridges)
ggplot(df, aes(y = intervention)) +
geom_density_ridges2(aes(x = value, fill = female),
scale = .7,
alpha = 0.6,
size = 0.25,
jittered_points = TRUE,
point_shape = 21,
point_size = 0.85,
point_fill = "black")
#> Picking joint bandwidth of 8.06
Кажется невозможным сопоставить эстетику точек с какими-либо переменными. Они должны быть фиксированными значениями. Я попытался указать формы вручную, но это не работает:
ggplot(df, aes(y = intervention)) +
geom_density_ridges2(aes(x = value, fill = female),
scale = .7,
alpha = 0.6,
size = 0.25,
jittered_points = TRUE,
point_shape = c(21,22)[df$female],
point_size = 0.85,
point_fill = "black")
#> Picking joint bandwidth of 8.06
#> Error: Aesthetics must be either length 1 or the same as the data (2548): size, scale, alpha, point_shape, point_size, point_fill
Лучшее, что я могу сделать, это не очень хороший сюжет:
ggplot(df , aes(y = intervention)) +
geom_density_ridges2(aes(x = value, fill = female),
scale = .7,
alpha = 0.6,
size = 0.25) +
geom_point(aes(x = value, shape = female),
position = position_jitter(height = 0.2, width = 0))
#> Picking joint bandwidth of 8.06
Вы могли бы, вероятно, опубликовать запрос о проблеме / функции на GitHub
Создано 2018-04-01 пакетом представлением (v0.2.0).