我想将these data绘制为一个简单的散点图/线图,它将显示二氧化碳水平的线性变化。但是,我无法绘制它,因为我无法将矩阵矢量化为适当的矢量。有人能帮我找到合适的方法吗?
感谢您的时间
答案 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)
制作
或者,如果您想绘制每年的平均值
ggplot(dat, aes(V1, Ann..Ave.)) +
geom_point() +
geom_line() +
scale_x_continuous(breaks=seq(1974, 2007, 5))
给予
答案 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)
情节如下:
答案 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)
我们将把您的数据数据下载到变化最多的组件中。