Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将特定的标记点添加到ggtern绘图?_R_Ggplot2_Ggtern - Fatal编程技术网

如何将特定的标记点添加到ggtern绘图?

如何将特定的标记点添加到ggtern绘图?,r,ggplot2,ggtern,R,Ggplot2,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_gr

使用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绘图


这似乎有两个要点。第一个是创建一个点,尽管这可能并不理想,因为它不如点精确。例如

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()


第二种选择是创建一个新的点,其优点是对点有更多的控制,缺点是标记需要额外的工作。

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

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"))

三件事,[1]您在ggtern构造函数中有两个aes参数[2]您的目标点的合成为70,相当于
x=0.143,y=0.143 z=0.714
,正是该点所在的位置,[3]警告
警告:忽略未知美学:z
与ggplot2试图处理x、y、z美学有关,这是一个异常现象,请忽略它。另一方面,我还建议您查看最新开发版本中的hexbin或tribin几何体,这将比像你这样绘制许多彩色点更干净、更有效。@NicholasHamilton谢谢你的提示!tribin看起来可能适用于数据集,或者在同一数据集中的第二列失败。
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)