如何使用匹配的手动色标创建 geom_text 和 geom_point?
How to create geom_text and geom_point with matching manual color scales?
我想创建一个绘图,其中我的标签(源自 geom_text
)与我用于我的点的手动色标相匹配。下面是一个使用 Iris 数据集的示例。当我输入以下代码时出现此错误:
library(tidyverse)
labels <- tibble(
Species = c("setosa", "veriscolor", "virginica"),
Sepal.Length = c(4.3, 5.5, 7),
Sepal.Width = c(3.5, 2.3, 3.7))
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(aes(color = Species)) +
geom_text(data = labels,
aes(x = Sepal.Length,
y = Sepal.Width, label = Species, color = Species),
inherit.aes = F) +
scale_color_manual(values = c("gray", "purple", "orange")
Error: Insufficient values in manual scale. 4 needed but only 3 provided.
我发现这与未使用的因子水平有关,但我似乎无法在此处应用他们的解决方案。
错误不在 ggplot 中,而是在您的标签数据框中:
labels <-
data.frame(
Species = levels(iris$Species),
Sepal.Length = c(4.3, 5.5, 7),
Sepal.Width = c(3.5, 2.3, 3.7) )
您还可以在全局 aes 中指定颜色以简化您的代码。而在Gregor评论之后,你不需要在geom_text中指定x和y,因为它也在全局美学中。
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point() +
geom_text(data = labels, aes(label = Species)) +
scale_color_manual(values = c("gray", "purple", "orange"))
我想创建一个绘图,其中我的标签(源自 geom_text
)与我用于我的点的手动色标相匹配。下面是一个使用 Iris 数据集的示例。当我输入以下代码时出现此错误:
library(tidyverse)
labels <- tibble(
Species = c("setosa", "veriscolor", "virginica"),
Sepal.Length = c(4.3, 5.5, 7),
Sepal.Width = c(3.5, 2.3, 3.7))
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(aes(color = Species)) +
geom_text(data = labels,
aes(x = Sepal.Length,
y = Sepal.Width, label = Species, color = Species),
inherit.aes = F) +
scale_color_manual(values = c("gray", "purple", "orange")
Error: Insufficient values in manual scale. 4 needed but only 3 provided.
我发现这与未使用的因子水平有关,但我似乎无法在此处应用他们的解决方案。
错误不在 ggplot 中,而是在您的标签数据框中:
labels <-
data.frame(
Species = levels(iris$Species),
Sepal.Length = c(4.3, 5.5, 7),
Sepal.Width = c(3.5, 2.3, 3.7) )
您还可以在全局 aes 中指定颜色以简化您的代码。而在Gregor评论之后,你不需要在geom_text中指定x和y,因为它也在全局美学中。
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point() +
geom_text(data = labels, aes(label = Species)) +
scale_color_manual(values = c("gray", "purple", "orange"))