在R中绘制线图

时间:2015-04-19 12:47:29

标签: r matrix vector graph plot

我想将these data绘制为一个简单的散点图/线图,它将显示二氧化碳水平的线性变化。但是,我无法绘制它,因为我无法将矩阵矢量化为适当的矢量。有人能帮我找到合适的方法吗?

感谢您的时间

3 个答案:

答案 0 :(得分: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 :(得分:1)

使用Base 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.

答案 2 :(得分:0)

您可以使用主成分来查找哪个月的二氧化碳变化更大。

这可能是根据特定地点查看数据的好方法。

将数据加载到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)

我们将把您的数据数据下载到变化最多的组件中。