When using the ggtern library to plot data on the simplex, R keeps giving me the warning
In ggplot2::geom_segment(data = lines, ggplot2::aes(x = x1, y = x2, :
Ignoring unknown aesthetics: z and zend
If I remove z and zend, it will give an error
Error in FUN(X[[i]], ...) : object 'V3' not found.
Here's the code for reproducibility
my_matrix <- matrix(c(0.000000, 0.000000, 1.000000,
0.666666, 0.000001, 0.333333,
1.000000, 0.000000, 0.000000,
0.000001, 0.333333, 0.666667,
0.333334, 0.333335, 0.333331,
0.333332, 0.666668, 0.000000,
0.000000, 0.666666, 0.333334,
0.666667, 0.333333, 0.000000,
0.000000, 1.000000, 0.000000,
0.333333, 0.000001, 0.666665),
nrow = 10, ncol = 3, byrow = TRUE)
design <- as.data.frame(my_matrix)
lines <- data.frame(x1 = c(0.5, 0, 0.5),
x2 = c(0.5, 0.5, 0),
x3 = c(0, 0.5, 0.5),
xend = c(1, 1, 1)/3,
yend = c(1, 1, 1)/3,
zend = c(1, 1, 1)/3)
ggtern::ggtern(design, ggplot2::aes(x = V1, y = V2, z = V3)) +
ggplot2::geom_point(size = 3, color = "blue") +
ggplot2::geom_segment(data = lines, ggplot2::aes(x = x1, y = x2,
xend = xend, yend = yend),
color = "grey", size = 0.2) +
ggplot2::theme_bw() + ggtern::theme_nomask() + ggtern::theme_clockwise()
I know the package::function() syntax is super annoying, I'm writing this for a plotting function in a toy R package, hence why there's no library(ggplot2) and library(ggtern).
So, any tips to get this warning to go away? What am I doing wrong? Does this have to do with ggtern being outdated?
I'm using ggplot2 version 3.4.1 and ggtern 3.4.1.
It looks like ggtern overrides geoms' normal mapping and requires each layer to be expressed in x/y/z coordinates where they'd normally just need x/y. So geom_segment needs a
zand azend. Your globalaes()in theggternline says thatzwill be found in theV3column, butlinesdoesn't have that column, leading to the error. We need to specify where thezandzendwill be found in thelinesdata.