2016-09-28 3 views
-3

Я работаю над фигурой, которая должна содержать 3 разных строки на одном графике. Фрейм данных, я работаю на это следующий:
enter image description hereРисунок многострочной диаграммы ggplot

Я хотел бы иметь возможность использовать Ind (моя точку данных) на оси х, а затем сделать 3 различные линии, используя данные, поступающие из колонка меда, b и c. Мне удалось получить только одну линию.

Не могли бы Вы помочь мне? код, который я использую сейчас, это

ggplot(data=f, aes(x=ind, y=med, group=1)) + 
    geom_line(aes())+ geom_line(colour = "darkGrey", size = 3) + 
    theme_bw() + 
    theme(plot.background = element_blank(),panel.grid.major = element_blank(),panel.grid.minor = element_blank()) 
+1

Вы должны расплавить ваши данные в длинном формате. –

+0

[Как сделать отличный пример воспроизведения R?] (Http://stackoverflow.com/questions/5963269) – zx8754

ответ

0

Ключ состоит в том, чтобы развернуть столбцы в новую переменную. Это происходит на этапе gather() в приведенном ниже коде. Остальное - это большая плита котла ggplot2.

library(ggplot2) 
library(tidyr) 

xy <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), 
       ind = 1:10) 

# we "spread" a and b into a a new variable 
xy <- gather(xy, key = myvariable, value = myvalue, a, b) 

ggplot(xy, aes(x = ind, y = myvalue, color = myvariable)) + 
    theme_bw() + 
    geom_line() 

enter image description here

0

С расплавом и ggplot:

df$ind <- 1:nrow(df) 
head(df) 
      a   b  med   c ind 
1 -87.21893 -84.72439 -75.78069 -70.87261 1 
2 -107.29747 -70.38214 -84.96422 -73.87297 2 
3 -106.13149 -105.12869 -75.09039 -62.61283 3 
4 -93.66255 -97.55444 -85.01982 -56.49110 4 
5 -88.73919 -95.80307 -77.11830 -47.72991 5 
6 -86.27068 -83.24604 -86.86626 -91.32508 6 

df <- melt(df, id='ind') 
ggplot(df, aes(ind, value, group=variable, col=variable)) + geom_line(lwd=2) 

enter image description here

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