要可视化的数据来自实验(T1-T8代表大脑的不同部分),如下所示:
[[Block1]]
sum
[T1,] 6
[T2,] 6
[T3,] 4
[T4,] 5
[T5,] 8
[T6,] 9
[T7,] 8
[T8,] 6
[[Block2]]
sum
[T1,] 3
[T2,] 3
[T3,] 4
[T4,] 5
[T5,] 4
[T6,] 2
[T7,] 1
[T8,] 5
[[Block3]]
sum
[T1,] 3
[T2,] 3
[T3,] 4
[T4,] 2
[T5,] 4
[T6,] 8
[T7,] 3
[T8,] 1
[[Block4]]
sum
[T1,] 6
[T2,] 5
[T3,] 4
[T4,] 3
[T5,] 9
[T6,] 8
[T7,] 2
[T8,] 6
[[Block5]]
sum
[T1,] 8
[T2,] 3
[T3,] 4
[T4,] 5
[T5,] 7
[T6,] 6
[T7,] 2
[T8,] 2
[[Block6]]
sum
[T1,] 10
[T2,] 9
[T3,] 6
[T4,] 8
[T5,] 9
[T6,] 4
[T7,] 6
[T8,] 7
以此类推..超过100个街区..
我想以以下方式可视化数据,以查看每个区域中每个区块的整体价值。
对于一个块,我得到了一个线条图,如下所示:
但是,对于100个区块来说,同样的可视化是乏味的。使用R.我尝试过用热图来查看它,但我更愿意将它们可视化为图形。
最后,它应该是这样的(我有一个大致的数字)..我不确定如何在R中对单个绘图中的几个块执行此操作,或者其他一些更好的可视化方法:
发布于 2013-06-25 01:16:59
在我看来,这基本上就是ggplot2
的作用。这是您的数据的重新创建,以及一个非常基本的图。
# Recreate your data.
data<-c(6,6,4,5,8,9,8,6,3,3,4,5,4,2,1,5,3,3,4,2,4,8,3,1,6,5,4,3,9,8,2,6,8,3,4,5,7,6,2,2,10,9,6,8,9,4,6,7)
list<-split(data,rep(1:6,each=8))
names(list)<-paste0('Block',1:6)
library(ggplot2)
library(reshape2)
dat<-melt(list)[2:1]
names(dat)<-c('Block','Value')
dat$brain.section<-rep(1:8,6)
ggplot(dat,aes(x=brain.section,y=Value,group=Block)) + geom_line() + facet_grid(Block~.)
你可以非常喜欢颜色和布局,但如果你不了解ggplot2
,你可以把它作为入门的东西。
下面是相同数据的热图
ggplot(dat,aes(x=brain.section,fill=Value,y=Block)) + geom_tile()
发布于 2013-06-25 02:04:18
这里有一个使用lattice xyplot
的替代方案。数据示例是真实的矩阵(100x8)。我尝试删除条带以优化绘图区域。我认为,结果只对获得数据的全局概念或主要趋势有用。
dat <- matrix(sample(1:10,100*8,rep=TRUE),nrow=8,
dimnames=list(paste0('T',1:8),paste0('Block',1:100)))
library(reshape2)
dat.m <- melt(dat)
xyplot(value~Var1|Var2,
data=dat.m,type=c('l','p'),
strip =FALSE,layout = c(10,10))
发布于 2013-06-25 02:37:08
这是一个或多或少符合预期结果的替代方案。我想,考虑到要可视化的大量块,规模并不重要。
## Recreate the data
my.data <- c(6,6,4,5,8,9,8,6,3,3,4,5,4,2,1,5,3,3,4,2,4,8,3,1,6,5,4,3,9,8,2,6,8,3,4,5,7,6,2,2,10,9,6,8,9,4,6,7)
n.block <- 6
n.sect <- 8
my.list <- split(my.data, rep(1:n.block, each = n.sect))
names(my.list) <- paste0("Block", 1:n.block)
sect.name <- paste0("T", 1:n.sect)
## Plot
scale.fact <- max(my.data)
plot(my.list[[1]], type = "n", axes = FALSE, ylim = c(1, n.block + 1), xlab = "", ylab = "")
for (i in seq(along = my.list)){
lines(i + my.list[[i]]/scale.fact)
}
axis(1, at = 1:n.sect, labels = sect.name, tick = TRUE)
axis(2, at = 1:n.block + sapply(my.list, function(x) x[[1]][1])/scale.fact,
labels = names(my.list), tick = TRUE, las = 1)
https://stackoverflow.com/questions/17280468
复制相似问题