«Игнорируя неизвестную эстетику: z и zend», но схожу с ума без z и zend
При использовании библиотеки ggtern для построения данных в симплексе R продолжает выдавать мне предупреждение
In ggplot2::geom_segment(data = lines, ggplot2::aes(x = x1, y = x2, :
Ignoring unknown aesthetics: z and zend
Если я удалю z и zend, выдаст ошибку
Error in FUN(X[[i]], ...) : object 'V3' not found.
Вот код для воспроизводимости
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()
Я знаюpackage::function()
синтаксис очень раздражает, я пишу это для функции построения графиков в игрушечном пакете R, поэтому нетlibrary(ggplot2)
иlibrary(ggtern)
.
Итак, есть ли какие-нибудь советы, как убрать это предупреждение? Что я делаю не так? Связано ли это с тем, что ggtern устарел?
Я использую ggplot2 версии 3.4.1 и ggtern 3.4.1.
1 ответ
Похоже, что ggtern переопределяет отображение нормалей геометрии и требует, чтобы каждый слой был выражен в координатах x/y/z, тогда как обычно им просто нужно x/y. Итак, geom_segment нуждается в и . Ваш глобальныйaes()
вggtern
строка говорит, что будет найдена вV3
столбец, но не имеет этого столбца, что приводит к ошибке. Нам нужно указать, где находитсяz
иzend
будет найден вlines
данные.
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, z = x3,
xend = xend, yend = yend, zend = zend),
color = "grey", size = 0.2) +
ggplot2::theme_bw() + ggtern::theme_nomask() + ggtern::theme_clockwise()