Установите альфа точек в ggplot для числового вектора

Я пытаюсь создать сюжет NMDS, используя ggplot. В дополнение к стандартному построению точек (сообществ / сообществ), корпусов и т. Д. Я также хотел бы настроить альфа каждой точки.

Я вычислил вектор числовых значений из 0-1 (называемый "Альфа"), который отражает время проведения опросов, соответствующих каждой точке, и я хотел бы использовать это для изменения альфа каждой точки. До сих пор я использовал вариации на тему:

 ggplot() +
     geom_point(data = data.scores, aes(x = NMDS1, y = NMDS2, colour =Treatment), size = 3) +
     scale_colour_manual(values = c("Burnt" = "black", "Grazed" = "tan4","Control" = "green4")) +
     scale_alpha_manual(values = Alpha) +
     geom_polygon(data = hull.data, aes( x = NMDS1, y = NMDS2, colour = Treatment),
                  linetype = "dashed", fill = NA) +
     coord_equal() +
     theme_bw() +
     theme(panel.border = element_blank(), panel.grid.major = element_blank(),
           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"),
           legend.position="top")

Это дает мне только графики, где альфа всех точек равна 1, альфа не равна 1, но имеет одинаковое значение (предположительно первое значение в моем векторе) или сообщения об ошибках. Кто-нибудь знает, что я делаю не так?

Для справки я смог довольно легко создать то, что я хочу, используя базовую графику R, но мне нужно, чтобы мой график был графикой ggplot:

введите описание изображения здесь

1 ответ

Решение

ggplot() синтаксис ожидает, что отображаемые значения для слоя будут переданы в этом слое, поэтому в geom_point(), а не путем добавления масштаба. Так что сейчас вы не определяете, к каким слоям вы хотите применить альфа-шкалу, поэтому все отображаются как alpha = 1 (по умолчанию).

Вы можете просто использовать необработанный вектор непосредственно в geom_point(), Используя воспроизводимый пример с mtcars:

library(ggplot2)
set.seed(1)

# sim your Alpha
Alpha <- runif(nrow(mtcars))

ggplot(data = mtcars, aes(mpg, hp)) +
    geom_point(alpha = Alpha)

scale_alpha_manual() не будет иметь никакого влияния на этот сюжет, так как вы ничего не отображаете с aes(alpha = ...),

Другие вопросы по тегам