首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中ggtern图上绘制两条路径

在R中ggtern图上绘制两条路径
EN

Stack Overflow用户
提问于 2015-10-28 13:39:00
回答 1查看 474关注 0票数 1

在R中的ggtern包中,我试图在相同的ternery图上绘制两条不同颜色的路径,并且只标记它们的起点,有人能告诉我如何做到这一点吗,我可以在单个图上得到路径,但不能在同一条图上一起,下面是我的示例: require(ggtern)

代码语言:javascript
复制
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() 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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]的标准范围之外。最后,为游行箭头创建了新的标签,这些箭头不同于顶端的标签。

可以使用以下代码生成上述解决方案:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33392589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档