2010-02-26 4 views
5

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

Из документации, я думаю, что я должен использовать масштаб здесь, но я не могу понять, какой из них или как это сделать. Что-то вроде: scale_something (name = «Описание лечения», breaks = NULL, labels = treatment_descriptions, 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')) 

ответ

5

Возможно, вы можете переделать свой фактор?

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')) 
+0

Спасибо, первое предложение работал, то второй не, я буду держать открытым вопрос сейчас, как я думаю, должен быть лучший способ сделать это. Мои описания довольно длинные, поэтому иметь их в таблице, как это выглядит очень уродливо, но я думаю, мне не нужно класть их в стол до того, как я заработаю, так что это неважно. Cheers, John – John

+0

Что случилось со вторым? Кстати, «...» представляет вашу группу ggplot() + geom_line + .. + scale_y_log2 – xiechao

+0

Несомненно, я пробовал это, но получаю синтаксическую ошибку, это сработало для вас? – John

Смежные вопросы