作为科学研究的一部分,我正在做一些计算,我遇到了一个问题。这与数据可视化有关。我得到了一个不同长度的子列表。这些子列表中的每一个都是每种情况下主变量数值的向量。问题是:有没有办法用下面的方式在3D图中显示它:假设x轴代表一个实验因子,y轴代表另一个实验因子,z轴是数值变量的数值的轴。我需要以垂直线的方式显示它(与z轴平行)。这些垂直线的数量等于因子组合(x轴和y轴)的数量。下面是使用较少数量的值(当列表大小相同时)时的外观:https://www.dropbox.com/s/wdcgihjcqzobsqs/sample0.jpeg我希望使其具有相同的布局,只是点数较多。这些子列表中的每一个都代表这6种因素组合中的一种情况。
或者也许有一种不同的方式,一种更好的方式来三维可视化这类数据。
下面是我需要可视化的子列表(我不知道这里是否相关):`> temp [1] 395 310 235 290 240 490 270 225 430 385 170 55 295 320 270 130 300 285 130 200 225 90 205 24 340
[2] 3 8
[3] 1 0 0 0 3 2 5 2 3 5 2 3
[4] 1 0 0 0 3 2 5 2 3 5 2 3
[5] 1 1 1 2 3 5 2 5 3 3 3 2 3 2 3
[6] 0 0 195 150 2 2 0 2 1 1 2 1 1 1 3 2 2 1 2 1 24 1 2 3 2 2 1 3 11`如有任何帮助/建议,我们将不胜感激。
发布于 2014-01-16 22:55:15
这是另一种可视化方法。请注意,你没有6D问题,它实际上是一个具有2个因子维度和一个连续维度的3D问题。有6种可能的因素组合。注意:我必须假设哪种因素组合对应于你列表中的哪一项:
facs <- cbind(f1=rep(f1, length(f2)), f2=rep(f2, each=length(f1))) # create factor combos
lst <- list(c(395, 310, 235, 290, 240, 490, 270, 225, 430, 385, 170, 55, 295, 320, 270, 130, 300, 285, 130, 200, 225, 90, 205, 340 ), c(3, 8), c(1, 0, 0, 0, 3, 2, 5, 2, 3, 5, 2, 3), c(1, 0, 0, 0, 3, 2, 5, 2, 3, 5, 2, 3), c(1, 1, 1, 2, 3, 5, 2, 5, 3, 3, 3, 2, 3, 2, 3), c(0, 0, 195, 150, 2, 2, 0, 2, 1, 1, 2, 1, 2, 1, 1, 1, 3, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 2, 1, 3, 1, 1))
library(data.table)
facs.dt <- as.data.table(facs)[,list(time=sort(lst[[.GRP]])), by=list(f1, f2)]
facs.dt[, id:=seq_along(time), by=list(f1, f2)]
library(ggplot2)
ggplot(facs.dt, aes(x=id, y=time)) +
geom_bar(stat="identity", position="dodge") +
scale_y_log10() + facet_grid(f1 ~ f2)

上面的结果图显示了6个因子组合中的每一个的所有时间值的对数。这使得读取连续变量比读取3D立方体容易得多。
和具有自由比例的备用视图:
ggplot(facs.dt, aes(x=id, y=time)) +
geom_bar(stat="identity", position="dodge") +
facet_wrap(~ f1 + f2, scales="free") +
opts(axis.text.x=element_blank(), axis.ticks.x=element_blank())

https://stackoverflow.com/questions/21163803
复制相似问题