Почему ggtern не отображает некоторые точки?
Я пытаюсь сделать график из 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()
1 ответ
Ну, на самом деле ваши точки получают заговор, но они лежат за пределами области сюжета.
Во-первых, чтобы понять, почему каждая строка ваших данных должна суммироваться в единое целое, иначе это будет приведено таким образом, поэтому вы будете строить следующее:
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)