首页 > 解决方案 > 如何将特定的标记点添加到 ggtern 图中?

问题描述

使用 ggplot2 我通常希望能够像这样添加数据点,

ggtern(df, aes(X, Y, Z, value = VALUE), aes(x, y, z)) +
        geom_point(aes(fill = VALUE), size = 2, stroke = 0, shape = 21) + 
        scale_fill_gradient(low = "red",high = "yellow", guide = F) + 
        scale_color_gradient(low = "red",high = "yellow", guide = F) +
    geom_point(aes(x = 10, y = 10, z = 50), shape = 21)

但是,当使用 ggtern 包生成三元图时,它们被插入到错误的位置(参见示例图像),并出现以下警告:

Warning: Ignoring unknown aesthetics: z

这意味着 ggplot2 可能试图渲染该点而不是 ggtern。如何将特定的标记点添加到 ggtern 图中?

数据点位于错误位置的三元图

标签: rggplot2ggtern

解决方案


这似乎有两个要点。首先是创建一个注释,尽管这可能并不理想,因为它不如一个点那么精确。一个例子是,

ggtern() + 
annotate(geom  = 'text',
              x     = c(0.5,1/3,0.0),
              y     = c(0.5,1/3,0.0),
              z     = c(0.0,1/3,1.0),
              angle = c(0,30,60),
              vjust = c(1.5,0.5,-0.5),
              label = paste("Point",c("A","B","C")),
              color = c("green","red",'blue')) +
  theme_dark() + 
  theme_nomask()

在此处输入图像描述

第二个选项是创建一个新的数据框并将其添加到绘图中。虽然这具有对点有更多控制的优点,但缺点是标记需要额外的工作。


推荐阅读