2014-07-24 4 views
2

У меня есть этот кодggplot не показывает легенду в geom_histogram

ggplot() 
+ geom_histogram(aes(x=V1, y=(..count..)/sum(..count..)), fill="red", alpha=.4, colour="red", data=coding, stat = "bin", binwidth = 30) 
+ geom_histogram(aes(x=V1,y=(..count..)/sum(..count..)), fill="blue", alpha=.4, colour="blue", data=lncrna, stat = "bin", binwidth = 30) 
+ coord_cartesian(xlim = c(0, 2000)) 
+ xlab("Size (nt)") 
+ ylab("Percentage (%)") 
+ geom_vline(data=cdf, aes(xintercept=rating.mean, colour=Labels), linetype="dashed", size=1) 

, которая производит красивую гистограмму без легенды:

enter image description here

В каждом посте я посещаю с той же проблемой, что они говорят поставить color внутри aes. тем не менее, это не дает никакой легенды.

Я пробовал:

ggplot() + geom_histogram(aes(x=V1, y=(..count..)/sum(..count..),color="red", fill="red"), fill="red", alpha=.4, colour="red", data=coding, stat = "bin", binwidth = 30) 
+ geom_histogram(aes(x=V1,y=(..count..)/sum(..count..), color="blue", fill="blue"), fill="blue", alpha=.4, colour="blue", data=lncrna, stat = "bin", binwidth = 30) 
+ coord_cartesian(xlim = c(0, 2000)) 
+ xlab("Size (nt)") 
+ ylab("Percentage (%)") 
+ geom_vline(data=cdf, aes(xintercept=rating.mean, colour=Labels), linetype="dashed", size=1) 

без успеха.

Как я могу разместить легенду на своем графике?

+1

Вы пытались указать заполнение/цвет внутри эстетического отображения? Я не вижу этого в вашем коде. Некоторые [примеры данных] (http://stackoverflow.com/a/5963610/1412059) упростят вам показать, как это сделать. – Roland

+0

Что такое эстетическое картографирование? – user2979409

+0

@ user2979409: Это функция 'aes()', которую вы используете. –

ответ

4

Проблема в том, что вы не можете отображать свой цвет в aes, потому что у вас есть два набора данных separete. Идея состоит в том, чтобы связать их, затем применить функцию «расплава» пакета reshape2, чтобы вы создали фиктивную категориальную переменную, которую вы можете передать в aes. код:

require(reshape2) 
df=cbind(blue=mtcars$mpg, red=mtcars$mpg*0.8) 
df=melt(df, id.vars=1:2) 
ggplot()+geom_histogram(aes(y=(..count..)/sum(..count..),x=value, fill=Var2, color=Var2), alpha=.4, data=df, stat = "bin") 

Там у вас есть ваша легенда

+1

re: используя это, ваши бары будут либо уклоняться, либо укладываться, но вы можете настроить параметр позиции, чтобы наложить полоски: «position = position_dodge (width = 0)» – agenis

7

Если вы не хотите, чтобы поместить данные в одном data.frame, вы можете сделать это:

set.seed(42) 
coding <- data.frame(V1=rnorm(1000)) 
lncrna <- data.frame(V1=rlnorm(1000)) 


library(ggplot2) 
ggplot() + 
    geom_histogram(aes(x=V1, y=(..count..)/sum(..count..), fill="r", colour="r"), alpha=.4, data=coding, stat = "bin") + 
    geom_histogram(aes(x=V1,y=(..count..)/sum(..count..), fill="b", colour="b"), alpha=.4, data=lncrna, stat = "bin") + 
    scale_colour_manual(name="group", values=c("r" = "red", "b"="blue"), labels=c("b"="blue values", "r"="red values")) + 
    scale_fill_manual(name="group", values=c("r" = "red", "b"="blue"), labels=c("b"="blue values", "r"="red values")) 

enter image description here

+0

Можно ли удалить имя легенды из вывода? – simone

+0

Просто пройди пустую строку ... – Roland

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