Как добавить условие к geom_point размеру?

Я пытаюсь добавить условие к geom_point размеру, и я вставил свой пример ниже. Я хотел бы, чтобы geom_point размер был 2, когда n_in_stat равняется 4 или больше и размеру = 5, когда n_in_stat - меньше чем 4. Я пытался поместить ifelse оператор в geom_point, но отказавшем. Возможно, я не могу включать логические операторы здесь, и я должен создать новый столбец в data.frame и установить размер на это?

geom_point (размер = ifelse (n_in_stat <4, 5, 2)) + # пытающийся установить размер с ifelse

geom_point (AES (размер = n_in_stat)) + # исходный масштабируемый линейно

library(ggplot2)

# Create a long data.frame to store data...
growth_series = data.frame ("read_day" = c(0, 3, 9, 0, 3, 9, 0, 2, 8), 
"series_id" = c("p1s1", "p1s1", "p1s1", "p1s2", "p1s2", "p1s2", "p3s4", "p3s4", "p3s4"),
"mean_od" = c(0.6, 0.9, 1.3, 0.3, 0.6, 1.0, 0.2, 0.5, 1.2),
"sd_od" = c(0.1, 0.2, 0.2, 0.1, 0.1, 0.3, 0.04, 0.1, 0.3),
"n_in_stat" = c(8, 8, 8, 8, 7, 5, 8, 7, 2)
)

# Plot using ggplot...
ggplot(data = growth_series, aes(x = read_day, y = mean_od, group = series_id, color = series_id)) +
geom_line(size = 1.5) +
geom_point(aes(size = n_in_stat)) +
geom_errorbar(aes(ymin = mean_od - sd_od, ymax = mean_od + sd_od), size = 1, width = 0.3) +
xlab("Days") + ylab("Log (O.D. 730 nm)") +
scale_y_log2() +
scale_colour_hue('my legend', breaks = levels(growth_series$series_id), labels=c('t1', 't2', 't3'))
6
задан p00ya 2 March 2010 в 08:11
поделиться

2 ответа

scale_size_manual устанавливает размеры для дискретной переменной.

geom_point(aes(size =n_in_stat>4)) + scale_size_manual(values=c(2,5))
5
ответ дан 17 December 2019 в 00:08
поделиться

также вы можете просто использовать функцию:

ff <- function(x){ifelse(x < 4, 5, 2)}

и затем заменить

geom_point(aes(size = n_in_stat)) +

на

geom_point(aes(size = ff(n_in_stat))) +
2
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: