Я хотел бы получить примерно такой же результат, как показано в примере ниже.Я колеблюсь между этими двумя функциями, чтобы получить этот результат: geom_crosshair_tern
и scale_X_continuous
.
Гамильтон, Небраска, и Ферри, М. (2018).ggtern: троичные диаграммы с использованием ggplot2.Журнал статистического программного обеспечения, 87 (1), 1-17.https://doi.org/10.18637/jss.v087.c03
Вот сценарий, который я написал до сих пор:
points1 <- data.frame(
rbind(c( 1,45,30,25),
c( 2,33,33,34),
c( 3,15,75,10)
)
)
colnames(points1) = c("IDPoint","X","Y","Z")
#geom_crosshair_tern version
base1 = ggtern(data=points1,aes(X,Y,Z)) +
theme_bw() +
tern_limits(labels=c(20,40,60,80,100), breaks=seq(0.2,1,by=0.2)) +
theme_clockwise() +
theme_showarrows() +
labs(title = "Test",Tarrow = "% X",Larrow = "% Y",Rarrow = "% Z") +
theme(tern.axis.arrow=element_line(size=1,color="black")) +
geom_point(shape=21,size=5,col="black",bg="slategray1") +
geom_text(aes(label=IDPoint),color="black") +
geom_crosshair_tern(lty=2)
Вот что я получаю с geom_crosshair_tern
, но у меня есть две проблемы:
- Я не знаю, как показать реальные значения моих данных;
- Я не знаю, как поставить свои очки над
geom_crosshair_tern
.
![Plot test](https://i.stack.imgur.com/oREXC.png)
Является ли scale_X_continuous
функция более подходящая?Я безуспешно пробовал следующий скрипт.
points1 <- data.frame(
rbind(c( 1,45,30,25),
c( 2,33,33,34),
c( 3,15,75,10)
)
)
colnames(points1) = c("IDPoint","X","Y","Z")
labFnc <- function(x,digits=2) format(round(unique(x),digits),digits=digits)
base1 = ggtern(data=points1,aes(X,Y,Z)) +
scale_T_continuous(breaks=unique(points1$y),labels=labFnc(points1$y)+
scale_L_continuous(breaks=unique(points1$x),labels=labFnc(points1$x)+
scale_R_continuous(breaks=unique(points1$z),labels=labFnc(points1$z)+
theme_bw() +
tern_limits(labels=c(20,40,60,80,100), breaks=seq(0.2,1,by=0.2)) +
theme_clockwise() +
theme_showarrows() +
labs(title = "Test",Tarrow = "% X",Larrow = "% Y",Rarrow = "% Z") +
theme(tern.axis.arrow=element_line(size=1,color="black")) +
geom_point(shape=21,size=5,col="black",bg="slategray1") +
geom_text(aes(label=IDPoint),color="black")