2015-04-19 5 views
1

Я хотел бы построить these data как простой график диаграммы рассеяния/линии, который будет показывать линейное изменение уровней CO2. Тем не менее, я не могу построить его, поскольку я не могу векторизовать матрицу в собственный вектор. Может ли кто-нибудь помочь мне найти правильный метод?График построения графика в R

Спасибо за ваше время

+1

Вам удалось прочитать данные? – user20650

+0

Вы хотите отображать уровни CO2 в течение всех месяцев в целом в зависимости от года? –

ответ

4

Это решение нуждается в development version of data.table v1.9.5

fread из data.table пакета делает хорошую работу по чтению данных, опуская ненужные строки текста. Затем вы можете изменить данные с помощью melt, также из data.table, готового к заговору.

# libraries 
library(data.table) 
library(ggplot2) 

# read in data 
dat <- fread("http://cdiac.ornl.gov/ftp/trends/co2/barrsio.co2", data.table=F) 

# remove spaces in names 
setnames(dat, names(dat), make.names(names(dat))) 

# reshape data 
dat_m <- melt(dat[-ncol(dat)], id.vars="V1") 

# plot 
ggplot(dat_m, aes(variable, value, group=1)) + 
     geom_point() + 
     geom_line() + 
     facet_wrap(~ V1, nrow=6) 

Для получения

enter image description here

Или, если вы хотите построить среднее значение за год

ggplot(dat, aes(V1, Ann..Ave.)) + 
     geom_point() + 
     geom_line() + 
     scale_x_continuous(breaks=seq(1974, 2007, 5)) 

Чтобы дать

enter image description here

1

Использования базы R Функция

Подобно тому, как альтернативная перспектива использования функции только базовые R

### Download the file 
    download.file("http://cdiac.ornl.gov/ftp/trends/co2/barrsio.co2", 
        "~/Downloads/so-data.txt") 
    ### Read the data line by line 
    raw.dat <- readLines(file("~/Downloads/so-data.txt")) 
    ### Extract the column names 
    col.names.index <- grep("jan.*feb", raw.dat, ignore.case=TRUE) 
    col.names <- raw.dat[col.names.index] 
    col.names <- strsplit(col.names, split='\t')[[1]] 
    (col.names <- col.names[-1]) 
    ### Extract the row names 
    row.names.index <- grep('^[12][019][0-9][0-9]', raw.dat) 
    row.names <- raw.dat[row.names.index] 
    row.names <- substr(row.names, 1, 4) 
    ### Extract the data 
    data.rows.index <- row.names.index 
    data.rows <- raw.dat[row.names.index] 
    ### I had to fix the first row of the data as it was missing a tab 
    ### I don't know if this is true in the original file 
    data.rows[1] <- paste(data.rows[1],'\t') 
    ### convert to a matrix 
    data.rows <- 
     matrix(as.numeric(unlist(strsplit(data.rows, 
             split='\t'))), 
      byrow=TRUE, 
      ncol=14) 

    ### drop the first and last columns: rownames, ave. 
    data.rows <- data.rows[,-c(1,13)] 
    colnames(data.rows) <- col.names[-13] 
    rownames(data.rows) <- row.names 

    ### Make the plots 
    par(mfrow=c(9,4)) 
    par(mar=c(1,1,1,1)) ### prevents margins too large error 
    for (i in rownames(data.rows)) 
     plot(data.rows[i,], type='l',main=i) 

Участки следующим образом: These plots need to be prettied up.

+0

где вы получаете данные из '~/Downloads/so-data.txt'? удаленно или с вашей локальной машины? – laukok

+1

Я сохранил веб-страницу, связанную с OP, с моими загрузками как текст – mcheema

+1

@teelou Я изменил код для загрузки файла напрямую – mcheema

0

Вы можете использовать основные компоненты, чтобы найти какой месяц есть больше изменений в CO2.

Это может быть хороший способ взглянуть на ваши данные на основе определенной местности.

После загрузки данных в R:

PCA = princomp(~Jan+Feb+March+April+May+June+July+Aug+Sept+Oct+Nov+Dec,Data,cor=TRUE) 

PCA 

loadings(PCA) 
plot(PCA) 
biplot(PCA) 

biplot мы будем данные вниз ваших данных в компоненте с большей вариации.

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