2016-06-29 5 views
-1

Я хочу дать дополнительную информацию в своей легенде. Я хочу дать каждому графику уникальный цвет, используя идентификатор. Но мои метки легенды я хочу содержать информацию из коэффициента, который может быть равен для разных идентификаторов, но всегда является постоянным для одного ID. Пример:Сопоставление другого фактора с этикетками легенды в R ggplot

mydata <- data.frame(x=rep(1:10,5), 
y=rep((1:10),5)*sort(rep((10:14)/10,10)), 
ID=sort(rep(1:5,10)), 
info1=sort(rep(c("A","B","C","D","C"),10)), 
info2=sort(rep(c("GG","HH","HH","GG","II"),10))) 

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID)))+geom_line() 

Это дает мне сюжет, как это должно быть плюс легенда с указанием идентификаторов.

enter image description here

Теперь мой вопрос IST как заменить идентификаторы от факторов в info1, сохраняя при этом различные цвета для каждого графика. А еще лучше было бы включить информацию info1 и info2 в одной легенде ...

Я знаю, как использовать дополнительный invisibe участок, чтобы получить дополнительные легенды, но это не совсем то, что я хочу:

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID)))+geom_line() + 
geom_point(aes(shape=NA,size=info1,fill=info2)) + guides(color=FALSE) 

enter image description here

Вместо этого мне хотелось бы, чтобы легенда была на первом рисунке, но информация (метка) со второго изображения. Конечно, беру информацию только из data.frame, не давая ее явно.

Спасибо за предложения

+0

Так вы 5 цветов, но 7 пунктов в вашей легенды, которые показывают размер, как вы пытаетесь соединить их вместе? – Nate

+0

Nathan, когда вы посмотрите, как построена структура данных (mydata), вы заметите, что я имею только 5 «элементов» с различными наборами факторов (ID, info1, info2), описывающих их. ID уникален, info1 имеет 4 уровня, а информация2 имеет 3 уровня. – lambu0815

ответ

1

Would склейки ID, info1 и info2 вместе и используя, что в качестве идентификатора работы?

mydata$ID2 = paste(mydata$ID,paste(mydata$info1),paste(mydata$info2), sep='-') 

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID2)))+geom_line() 

enter image description here

+0

Хорошо, я бы назвал это приемлемым обходным решением, спасибо, Джин. Кажется, что нет чистого способа ggplot для этого. Где на самом деле это очень распространенная задача, поставив некоторые метаданные на экспериментальные результаты ... – lambu0815

+0

@ lambu0815, если это сработает, вы отметили бы это как ответ? Спасибо :) –

+0

Джин, я хотел бы оставить его открытым еще на один-два дня. – lambu0815

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