2014-02-03 6 views
0

Этот вопрос является продолжением на этот пост: previous postДобавление легенды к ggplot

У меня есть 12 переменных, M1, M2, ..., M12, для которых я вычислить некоторые статистические данные x и y.

df = data.frame(model = factor(paste("M", 1:28, sep = ""), levels=paste("M", 1:28, sep = "")), a = runif(28, 1, 1.05), b = runif(28, 1, 1.05)) 

levels = seq(0.8, 1.2, 0.05) 

Вот сюжет:

ggplot(data=df) + 
    geom_polygon(aes(x=model, y=a, group=1), color = "red", fill = NA) + 
    geom_polygon(aes(x=model, y=b, group=1), color = "blue", fill = NA) + 
    coord_polar() + 
    scale_y_continuous(limits=range(levels), breaks=levels, labels=levels) + 
    theme(axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank()) 

Я хотел бы добавить легенду к сюжету, где у меня есть две линии, одна красная с надписью «а», и один синий с надписью «Ъ» ,

Я попытался с помощью scale_colour_manual следующим образом:

scale_colour_manual(values = c("red", "blue"), labels = c("a", "b")) 

, но это не похоже на работу. Любая помощь будет оценена по достоинству. Благодаря!

ответ

2
library(reshape2) 
df1 <- melt(df, id="model") 

levels = seq(0.8, 1.2, 0.05) 

ggplot(data=df1) + 
    geom_polygon(aes(x=model, y=value, group=variable, colour=variable), fill = NA) + 
    scale_colour_manual(values=c("a"="blue", "b"="red")) + 
    coord_polar() + 
    scale_y_continuous(limits=range(levels), breaks=levels, labels=levels) + 
    theme(axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank()) 

enter image description here

+0

Спасибо Roland! Это работает отлично. Есть ли способ настроить легенду, чтобы я получал линии, а не ящики с линиями внутри? Еще раз спасибо. – Mayou

+0

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

+0

Все в порядке. Это мелочь. Это работает для меня! – Mayou

0

Вы можете удалить фон из легенды, добавив:

+ theme(legend.background=element_rect(colour=NA) 

Не забудьте добавить последнюю закрывающую скобку.

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