首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将特定的、带标签的点添加到ggtern图中?

如何将特定的、带标签的点添加到ggtern图中?
EN

Stack Overflow用户
提问于 2018-05-21 12:03:55
回答 2查看 1K关注 0票数 3

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

代码语言:javascript
复制
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包生成三元关系图时,它们被插入到错误的位置(参见示例图像),并显示以下警告:

代码语言:javascript
复制
Warning: Ignoring unknown aesthetics: z

这意味着ggplot2可能正在尝试呈现该点,而不是ggtern。如何将特定的带标签的点添加到ggtern图中?

EN

回答 2

Stack Overflow用户

发布于 2018-05-21 12:20:05

这似乎有两个要点。第一种方法是创建一个annotation,尽管这可能不是很理想,因为它不像点那样精确。举个例子,

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

第二种选择是创建一个新的data frame and add that to the plot.,虽然这样做的优点是对点有更多的控制,但缺点是标记将需要额外的工作。

票数 0
EN

Stack Overflow用户

发布于 2018-05-21 12:59:39

一种可能是有一个列来标识您想要标记的点,在本例中是列“lab”,并说我想标记点一和三:

代码语言:javascript
复制
df <- data.frame(x=c(10,20,30), y=c(15,25,35), z=c(75,55,35), VALUE=c(1,2,3), lab=c("One", "", "Three"))

然后,可以使用geom_text或geom_label来标记这些特定点,例如:

代码语言:javascript
复制
ggtern(df, aes(x, y, z, value = VALUE)) +
  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_text(aes(label = lab), vjust=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50441843

复制
相关文章

相似问题

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