在R中的ggtern包中,我试图在相同的ternery图上绘制两条不同颜色的路径,并且只标记它们的起点,有人能告诉我如何做到这一点吗,我可以在单个图上得到路径,但不能在同一条图上一起,下面是我的示例: require(ggtern)
require(ggtern)
x <- data.frame(
A = c( 0, 0, 1, 0.1),
B = c( 0, 1, 0, 0.3) ,
C = c( 1, 0, 0, 0.6)
)
yy<-data.frame(
D= c(0.6, 0.2,0.8,0.33 ),
E= c(0.2, 0.8, 0.1,0.33),
F= c(0.2, 0.0, 0.1,0.33)
)
ggtern(data=x,aes(A,B,C)) +
geom_path(color="red")+
geom_point(type="l",shape=21,size=2) +
geom_text(label="", color="blue")+
theme_classic()
ggtern(data=yy,aes(D,E,F)) +
geom_path(color="blue")+
geom_point(type="l",shape=21,size=1) +
theme_classic() 发布于 2016-01-18 00:03:14
在这里,我将回答您的问题,并借此机会演示ggtern 2.0.1的一些附加功能,这是几天前在完全重写包以与ggplot2 2.0.0兼容之后在CRAN上发布的。关于ggtern 2.0.X中新功能的摘要可以找到这里。
Eric Fail正确地说,最好的解决方案要求将数据组合成单个数据,并将路径分组或映射到不同的颜色变量中,以便区分它们。另一种方法是创建两个(2)路径层,将一个本地数据create传递给每个几何,而不是使用传递给ggtern构造函数的全局数据。
在下面的解决方案中,我组合了数据,创建了一个'Series‘变量(随后映射到颜色),然后使用了新版本的ggplot2附带的新的ggplot2几何。由于其中一些点位于周边(以及标签延伸到周边以外),我还在图层下使用了手动剪裁掩码,它抑制了自动裁剪掩码--通常在前景中呈现。为了演示起见,我还应用了theme_rotate(...)方便函数,并利用limit_tern(...)方便函数将轴的范围扩展到[0,1]的标准范围之外。最后,为游行箭头创建了新的标签,这些箭头不同于顶端的标签。

可以使用以下代码生成上述解决方案:
require(ggtern)
df.A <- data.frame(
A = c( 0, 0, 1, 0.1),
B = c( 0, 1, 0, 0.3) ,
C = c( 1, 0, 0, 0.6)
)
df.B <-data.frame(
A= c(0.6, 0.2,0.8,0.33 ),
B= c(0.2, 0.8, 0.1,0.33),
C= c(0.2, 0.0, 0.1,0.33)
)
df = rbind(data.frame(df.A,Series='A'),
data.frame(df.B,Series='B'))
df$Label = 1:nrow(df)
ggtern(data=df,aes(A,B,C,colour=Series)) +
theme_dark() +
theme_legend_position('topleft') +
theme_showarrows() + custom_percent('%') +
theme_rotate(60) +
geom_mask() +
geom_path(size=1) +
geom_label(aes(label=Label),show.legend = F) +
limit_tern(1.1,1.1,1.1) +
labs(title ="Example Combined Paths",
Tarrow = "Value B",
Larrow = "Value A",
Rarrow = "Value C")https://stackoverflow.com/questions/33392589
复制相似问题