0

要可视化的数据来自一个实验(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个街区..

我想通过以下方式可视化数据,以查看每个区域的整体价值。

对于一个块,我得到一个线图,如下所示:

区块 1

但是对于 100 个块将其可视化是很乏味的。使用 R 将其视为单个图的最佳方法是什么。我尝试使用热图来实现,但我宁愿将它们可视化为图表。

最后它应该是这样的(我有一个粗略的数字)。我不确定如何在 R 中为单个图中的几个块执行此操作,或者其他更好的方式来可视化它: 在此处输入图像描述

4

3 回答 3

7

这里使用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-24T18:04:17.727 回答
2

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-24T17:16:58.677 回答
1

这是一个或多或少符合预期结果的替代方案。我想考虑到要可视化的大量块,规模并不重要。

## 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)
于 2013-06-24T18:37:07.630 回答