Как добавить собственные ярлыки серий к легенде в ggplot R? - PullRequest
5 голосов
/ 26 февраля 2010

У меня есть график (пример кода вставлен ниже), который я пытаюсь добавить с помощью собственных ярлыков для информации о серии. Вместо того, чтобы строить «p1s1», «p1s2», «p3s4», я бы хотел «лечение 1», «лечение 2», «лечение 3». Я использовал уровни (series_id), чтобы получить уникальные имена серий, и использовал таблицу поиска, чтобы получить описания. (Я думаю, что они получают их в том же порядке, в котором они изображены?), И у меня есть эти описания в векторе под названием treatment_description.

Из документации я думаю, что мне следует использовать здесь шкалу, но я не могу понять, какой или как это сделать. Что-то вроде: scale_something (name = "Описания процедур", breaks = NULL, метки = описания_ обработок, formatter = NULL)? Но куда это должно идти?

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)
)

> # Now gives us some example long form data...
> > growth_series 
>  read_day series_id mean_od sd_od        n_in_stat   
>   1       p1s1     0.6      0.10         8 2       
>   3       p1s1     0.9      0.20         8 3    
>   9       p1s1     1.3      0.20         8 4    
>   0       p1s2     0.3      0.10         8 5    
>   3       p1s2     0.6      0.10         7 6    
>   9       p1s2     1.0      0.30         5 7    
>   0       p3s4     0.2      0.04         8 8    
>   2       p3s4     0.5      0.10         7 9    
>   8       p3s4     1.2      0.30         2 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'))

1 Ответ

6 голосов
/ 26 февраля 2010

может быть, вы можете перемаркировать свой фактор?

growth_series$series_id <- factor(
     growth_series$series_id, 
     labels=c('treatment 1', 't2', 't3'))

Или, если вы все еще ищете scale_something, это должно быть scale_colour_hue ()

... + scale_colour_hue('my legend', 
   breaks = levels(growth_series$series_id), 
   labels=c('t1', 't2', 't3'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...