2013-09-26 17 views
1

The solution with ggplot в this question работал очень хорошо для моих данных. Тем не менее, я пытаюсь добавить легенду, и все, что я пробовал, не работает ...Участок двух графиков в одном и том же участке

Например, в примере ggplot в приведенном выше вопросе, как я могу добавить легенду, чтобы показать, что красная кривая связана к «Океану», а зеленая кривая связана с «Почвой»? Да, я хочу добавить текст, который я буду определять, и он не связан ни с какой другой переменной в моем data.frame.

В примере ниже некоторые из моих собственных данных ...

Rate  Probability  Stats 
1.0e-04 1e-04   891.15 
1.0e-05 1e-04   690 
... 

и т.д. (это около 400 строк). И у меня есть два кадра данных, похожие на приведенные выше. Так мой код

g <- ggplot(Master1MY, aes(Probability)) 
g <- g + geom_point(aes(y=Master1MY$Stats), colour="red", size=1) 
g <- g + geom_point(aes(y=Transposon1MY$Stats), colour="blue", size=1) 
g + labs(title= "10,000bp and 1MY", x = "Probability", y = "Stats") 

Сюжет выглядит this

Я просто хочу красную и синюю легенду, «Мастер» и «транспозонового»

Спасибо!

ответ

4

В ggplot, как правило, наиболее удобно хранить данные в «длинном» формате. Здесь я использую функцию melt из пакета reshape2, чтобы преобразовать ваши данные из широкоформатного формата. В зависимости от того, как вы укажете различные теги (размер, форма, цвет и с), появятся соответствующие легенды.

library(ggplot2) 
library(reshape2) 

# data from the example you were referring to, in a 'wide' format. 
x <- seq(-2, 2, 0.05) 
ocean <- pnorm(x) 
soil <- pnorm(x, 1, 1) 
df <- data.frame(x, ocean, soil) 

# melt the data to a long format 
df2 <- melt(data = df, id.vars = "x") 

# plot, using the aesthetics argument 'colour' 
ggplot(data = df2, aes(x = x, y = value, colour = variable)) + geom_line() 

enter image description here

Edit, задать имя и метки легенды

# Manually set name of the colour scale and labels for the different colours 
ggplot(data = df2, aes(x = x, y = value, colour = variable)) + 
geom_line() + 
scale_colour_discrete(name = "Type of sample", labels = c("Sea water", "Soil")) 

Edit2, следующие новые выборочные данные Преобразование данных, предполагая свою организацию от своего обновления , в длинном формате. Опять же, я считаю, что вы делаете свою жизнь ggplot проще, если вы держите свои данные в длинном формате. Я связываю каждый шаг с простыми примерами данных, которые я использовал в своем первом ответе. Обратите внимание, что существует много альтернативных способов переупорядочения ваших данных. Это один из способов, основанный на небольших (не воспроизводимых) частях ваших данных, которые вы указали в обновлении.

# x <- seq(-2, 2, 0.05) 
# Master1MY$Probability 
Probability <- 1:100 

# ocean <- pnorm(x) 
# Master1MY$Stats 
Master1MY <- rnorm(100, mean = 600, sd = 20) 

# soil <- pnorm(x,1,1) 
# Transposon1MY$Stats 
Transposon1MY <- rnorm(100, mean = 100, sd = 10) 

# df <- data.frame(x, ocean, soil) 
df <- data.frame(Probability, Master1MY, Transposon1MY) 

# df2 <- melt(df, id.var = "x") 
df2 <- melt(df, id.var = "Probability") 

# default 
ggplot(data = df2, aes(x = Probability, y = value, col = variable)) + 
    geom_point() 

# change legend name and labels, see previous edit using 'scale_colour_discrete' 

# set manual colours scale using 'scale_colour_manual'. 

ggplot(data = df2, aes(x = Probability, y = value, col = variable)) + 
    geom_point() + 
    scale_colour_manual(values = c("red","blue"), name = "Type of sample", labels = c("Master", "Transposon")) 

enter image description here

+1

Это может быть стоит добавить этот пример к ggplot ответа на вопрос, связанный выше, а также. Для ответа с 12 upvotes это не очень хороший пример кода 'ggplot'. – joran

+0

Хорошая точка. @Fabs был немного неудачлив, чтобы наткнуться на широкоформатный пример. – Henrik

+0

Спасибо! Но я не думаю, что этот пример будет работать для меня сейчас ... (или, может быть, я не понял этот пример и сожалею об этом) ... Я отредактирую свой вопрос и покажу часть моего примера ... возможно есть простой способ сделать то, что я хочу сделать ... еще раз спасибо! – Fabs

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