2015-07-09 2 views
1

Я хочу построить мои данные .csv (я назвал его p) на R, используя ggplot2, но у меня возникают трудности.ggplot multicolomn on R using csv

Time d d d d c m m m m c c c........... (top row of data p) 

Есть 14 строк и 304 столбца. Первый столбец - время и остальное - d c m so on ...... Я хочу построить график времени по оси x относительно остатка 303 по оси y в окне отдельного графика, и эти 303 линии графика будут отличаться цветом.

верхний ряд имеет буквы типа d c m .. theese are my 3 forest Группы: хвойные, лиственные, смешанные. поэтому я хочу, чтобы все графические линии с 'd' были сгруппированы в один конкретный цвет. затем «c» в другом цвете и «m» в другом.

Я нашел способ сделать это с помощью ggplot

ggplot(p, aes(x = Time, group = 1)) + 
geom_line(aes(y = d), colour="blue") + 
geom_line(aes(y = c), colour = "red") + 
geom_line(aes(y = m), colour = "green") + 
ylab(label="NDVI") + xlab("Time") 

, но из 303 у меня есть 117 столбцов д
77 для с
109 для м

Какой код следует использовать таким образом R построил бы все столбцы, предоставив все ds, cs и ms различные цвета?

Пожалуйста, помогите, я застрял на этом в течение нескольких дней.

+0

Я не ясно, как выглядят ваши данные, но вы можете попытаться преобразовать данные из широкого формата долго. Это упростит вашу работу. Вот несколько примеров для конверсии: http://stats.stackexchange.com/q/7439/38261 – TrigonaMinima

+0

О, я упоминал строки столбцов, противоположные в моем вопросе –

+0

У меня есть 14 строк .... 304 coloumns –

ответ

0

Вот предложение, я надеюсь, что будет отвечать вашим потребностям:

require(ggplot2) 
require(reshape2) 

time <- 1:14 # your 14 rows 
# here data with only 3 forest types, consider using yours instead ! 
data.test <- data.frame(time=time, d=runif(14, max=1)*time, c=runif(14, max=2)*time, m=runif(14, max=3)*time) 

#reshape your data for it to suit the ggploting 
data.test <- melt(data.test, id.vars="time", variable.name="forest", value.name="y") 

# add a numeric version of the factor forest (for gradient color) 
data.test$numeric.forest <- rep(1:3, each=14) # replace 1:3 by 1:304 

# first plot, each forest type got a color ... should not be readable with your dimensions (304 lines) 
ggplot(data.test) + geom_line(aes(x=time, y=y, group=forest, color=forest)) 

# if you have 304 forest types, you might consider using color gradient, 
# but you need to identify a logical order in your forest, for the gradient to be informative ... 
ggplot(data.test) + geom_line(aes(x=time, y=y, group=forest, color=numeric.forest), alpha=.9) 
# consider playing with alpha (transparency) for your lines to be readable 
+0

Большое вам спасибо за вашу помощь. Я новичок в r, поэтому мне нужно немного побороться, чтобы все было сделано. Я попробовал ваш метод, но после # добавить числовую версию леса факторов (для градиентного цвета) он дает ошибку –

+0

Ошибка в '$ <-. Data.frame' (' * tmp * '," numeric.forest ", value = c (1L, 1L,: Замена имеет 4256 строк, данные имеют 42, так что теперь я застрял, я не уверен, что это означает –

+0

Это вызвано только тем, что вы использовали эту строку: 'data.test <- data.frame (время = время, d = runif (14, max = 1) * время, c = runif (14, max = 2) * время, m = runif (14, max = 3) * время) ' , который составляет 42 строки длинный, а не ваши данные, длина которых должна составлять 4256 строк (304 * 14). Я помещал эту строку juste для генерации случайных данных, чтобы отображать графики, но вам нужно адаптировать их к вашим измерениям. Вам может понадобиться 'read. table ("путь/to/your/data.csv") 'или' read.csv ("путь/to/your/data.csv") 'вместо этого! Извините за задержку в моем ответе, большое время AFK ... –