我正在做一些计算,作为科学研究的一部分,我遇到了问题。这与数据可视化有关。 我得到了一份不同长度的子列表。这些子列表中的每一个都是每个情况的主变量的数值的向量。问题是这样的: 有没有办法以下列方式在3D绘图中显示它: 假设x轴代表一个实验因素,y轴代表另一个实验因素,z轴是我们的nnumeric变量的数值轴。我需要以垂直线(parralel到z轴)的方式显示它。这些垂直线的数量等于因子组合的数量(x轴和y轴)。以下是使用较少量值的方式(当列表大小相同时): https://www.dropbox.com/s/wdcgihjcqzobsqs/sample0.jpeg 我想在相同的布局中制作它,只有更多的点。这些子列表中的每一个都代表因子组合的6种情况之一。
或许有一种不同的方式,这种数据的三维可视化的更好方式。
以下是我需要进行可视化的子列表列表(我不知道这是否与此相关): `>温度 [[1]] [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]] [1] 3 8
[[3]] [1] 1 0 0 0 3 2 5 2 3 5 2 3
[[4]] [1] 1 0 0 0 3 2 5 2 3 5 2 3
[[5]] [1] 1 1 1 2 3 5 2 5 3 3 3 2 3 2 3
[[6]] [1] 0 0 195 150 2 2 0 2 1 1 2 1 2 1 1 1 3 2 2 1 2 2 1 [24] 1 2 3 2 2 1 3 1 1 ` 任何帮助/建议将不胜感激。
答案 0 :(得分:2)
这是另一种可视化。请注意,您没有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())