我正在尝试从包含正值和负值的data.frame绘制一个图,但我无法绘制所有点。有人知道,如果可以调整代码来绘制所有点吗?
example = data.frame(X1=c(-1,-0.5,1),X2=c(-1,0.7,1),X3=c(1,-0.5,2))
ggtern(data=example, aes(x=X1,y=X2,z=X3)) + geom_point()
答案 0 :(得分:2)
实际上你的积分正在被绘制,但它们位于情节区域之外。
首先,为了理解为什么,你的数据的每一行必须总和为一,否则它将被强制执行,因此你将绘制的内容如下:
example = example / matrix(rep(rowSums(example),ncol(example)),nrow(example),ncol(example))
example
X1 X2 X3
1 1.000000 1.000000 -1.000000
2 1.666667 -2.333333 1.666667
3 0.250000 0.250000 0.500000
现在行总和为:
print(rowSums(example))
[1] 1 1 1
你有负值,这在“组成”方面是荒谬的,但是,仍然可以绘制负浓度,因为它们将在数字上表示三元区域外的点,让我们扩展极限并渲染以查看它们的位置:
ggtern(data=example, aes(x=X1,y=X2,z=X3)) +
geom_mask() +
geom_point() +
limit_tern(5,5,5)