3D分类图没有成比例的线条长度
3D categorized plot does not have proportional length of lines
我正在使用下面的代码生成一个 3D 分类图。正如您在示例范围中看到的那样,向量 Z 的范围在 0 到 5 之间,而向量 X 的范围在 0 到 20 之间。
我希望在 3D 中看到它们不是正方形,而是矩形类型的 3D 图形,因为 X 的长度大于 Z 的长度。
我怎样才能在情节中根据值的范围制作线条的长度。 (所以图中线条的长度是基于它们的比例长度)
我用的是lattice,不过也可以用GGPLot解决
Z<-(sample.int(101,size=100,replace=TRUE)-1)/20
Y<-(sample.int(101,size=100,replace=TRUE)-1)/10
X<-(sample.int(101,size=100,replace=TRUE)-1)/5
boxplot(Z)
cat <- c(rep("A",0.1*100),rep("B",0.2*100),rep("C",0.65*100),rep("D",0.05*100))
cat <- sample(x, 100)
df <- data.frame(X, Y, Z, cat)
library(lattice)
cloud(Z ~ Y * X, group = cat, data = df, auto.key = TRUE)
尝试
cloud(Z ~ Y * X, group = cat, data = df, auto.key = TRUE,
aspect=c(2,.5))
来自?cloud
:
aspect
is taken to be a numeric vector of length 2, giving the
relative aspects of the y-size/x-size and z-size/x-size of the
enclosing cube.
这是针对 z ~ x * y
形式的公式。
请注意,您有 Z ~ Y * X
,因此定义已切换。
编辑:
您还可以使用
之类的方法计算相对大小
cloud(Z ~ Y * X, group = cat, data = df, auto.key = TRUE,
aspect=c(diff(range(X))/diff(range(Y)),diff(range(Z))/diff(range(Y))))
我正在使用下面的代码生成一个 3D 分类图。正如您在示例范围中看到的那样,向量 Z 的范围在 0 到 5 之间,而向量 X 的范围在 0 到 20 之间。 我希望在 3D 中看到它们不是正方形,而是矩形类型的 3D 图形,因为 X 的长度大于 Z 的长度。 我怎样才能在情节中根据值的范围制作线条的长度。 (所以图中线条的长度是基于它们的比例长度)
我用的是lattice,不过也可以用GGPLot解决
Z<-(sample.int(101,size=100,replace=TRUE)-1)/20
Y<-(sample.int(101,size=100,replace=TRUE)-1)/10
X<-(sample.int(101,size=100,replace=TRUE)-1)/5
boxplot(Z)
cat <- c(rep("A",0.1*100),rep("B",0.2*100),rep("C",0.65*100),rep("D",0.05*100))
cat <- sample(x, 100)
df <- data.frame(X, Y, Z, cat)
library(lattice)
cloud(Z ~ Y * X, group = cat, data = df, auto.key = TRUE)
尝试
cloud(Z ~ Y * X, group = cat, data = df, auto.key = TRUE,
aspect=c(2,.5))
来自?cloud
:
aspect
is taken to be a numeric vector of length 2, giving the relative aspects of the y-size/x-size and z-size/x-size of the enclosing cube.
这是针对 z ~ x * y
形式的公式。
请注意,您有 Z ~ Y * X
,因此定义已切换。
编辑: 您还可以使用
之类的方法计算相对大小cloud(Z ~ Y * X, group = cat, data = df, auto.key = TRUE,
aspect=c(diff(range(X))/diff(range(Y)),diff(range(Z))/diff(range(Y))))