2015-11-05 3 views
0

У меня есть график плотности с помощью этого кода:клавиши Изменить ярлык и название на кривой плотности участка с ggplot2

p <- ggplot(data=paddling, aes(frequency, color=type, fill=type)) 
p <- p + geom_density(alpha=0.2) 
p <- p + scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') 

enter image description here

Я хотел бы изменить ключи легенды и заголовок легенды. Я попытался с помощью:

p <- p + scale_fill_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet")) 

Но он просто добавил еще одну легенду поверх другой:

enter image description here

Любая помощь будет принята с благодарностью! Спасибо!!

+0

Вы попробовали scale_fill_continuous вместо этого? – TKN

+0

Это дает мне ошибку: Ошибка: Дискретное значение, поставляемое для непрерывной шкалы – user3406207

ответ

1

Что вы делали, было на полпути. Поскольку у вас есть две используемые эстетики (заливка и цвет), обеим из них нужна легенда. Итак, если вы измените название легенды и метки для заливки, легенда о цвете не изменится и будет построена как есть. Таким образом, решение, чтобы добавить «scale_color_discrete»:

#generate data 

set.seed(123) 
n=1000 
paddling <- data.frame(frequency=runif(n,0,n), 
         type=sample(c("hand_only","with_feet"),n,T)) 


#plot 

p <- ggplot(data=paddling, aes(frequency, color=type, fill=type)) + 
    geom_density(alpha=0.2)+ 
    scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') + 
    scale_fill_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet"))+ 
    scale_color_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet")) 

p 

enter image description here

Это может быть немного громоздким, если у вас есть много отображений уровней. Это другой подход: изменить данные (как имя столбца, так и уровни факторов)

#note the backticks needed for space 
paddling$`Paddling type` <- paddling$type 
levels(paddling$`Paddling type`) 
levels(paddling$`Paddling type`) <- c("Hands only","Hands and feet") 



p2 <- p <- ggplot(data=paddling, aes(frequency, color=`Paddling type`, fill=`Paddling type`)) + 
    geom_density(alpha=0.2)+ 
    scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') 
+0

Спасибо, я понимаю! Это работает отлично! – user3406207