将 ggplot 中点的 alpha 设置为数字向量
Set the alpha of points in ggplot to a numeric vector
我正在尝试使用 ggplot 创建 NMDS 图。除了点的标准绘图(communities/assemblages)和外壳等。我还想调整每个点的 alpha。
我计算了一个 0-1 数值向量(称为 "Alpha"),它反映了与每个点对应的调查时间,我想用它来修改每个点的 alpha观点。到目前为止,我一直在使用以下主题的变体:
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")
这只得到了所有点的 alpha 为 1 的图,alpha 不是 1 但设置为相同的值(大概是我向量中的第一个值)或错误消息。有谁知道我做错了什么吗?
作为参考,我能够相当轻松地使用基本 R 图形创建我想要的内容,但我需要我的绘图是 ggplot 图形:
ggplot()
语法期望为层映射的值在该层中传递,因此在 geom_point()
中传递,而不是通过添加比例。所以现在您没有定义要应用 alpha 比例的图层,因此所有图层都显示为 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 = ...)
.
映射任何内容
我正在尝试使用 ggplot 创建 NMDS 图。除了点的标准绘图(communities/assemblages)和外壳等。我还想调整每个点的 alpha。
我计算了一个 0-1 数值向量(称为 "Alpha"),它反映了与每个点对应的调查时间,我想用它来修改每个点的 alpha观点。到目前为止,我一直在使用以下主题的变体:
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")
这只得到了所有点的 alpha 为 1 的图,alpha 不是 1 但设置为相同的值(大概是我向量中的第一个值)或错误消息。有谁知道我做错了什么吗?
作为参考,我能够相当轻松地使用基本 R 图形创建我想要的内容,但我需要我的绘图是 ggplot 图形:
ggplot()
语法期望为层映射的值在该层中传递,因此在 geom_point()
中传递,而不是通过添加比例。所以现在您没有定义要应用 alpha 比例的图层,因此所有图层都显示为 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 = ...)
.