在R中,我试图使用ggplot的geom_point
绘制一些数据。
让我们模拟一些数据:
df <- data.frame(x = rnorm(20),
y = rnorm(20),
z = LETTERS[sample(3, 20, replace = T)])
基本上,数据是与因子标签(“A”,“B”或“C”)相关的一些坐标。
我想使用ggplot的geom_point
在散点图上绘制它们,我想手动设置“C”点标记的颜色。我不关心ggplot为“A”和“B”点设置标记的颜色。
以下是我的想法:
library(dplyr)
library(ggplot2)
df %>%
filter(z != "C") %>%
ggplot(aes(x, y)) +
geom_point(aes(colour = factor(z))) +
geom_point(data = filter(df, z == "C"),
aes(x, y), colour = "#C0C0C0")
......看起来像这样:
这正是我想要的,除了“C”点的标记没有出现在图例中。
让我们再试一次,略有不同:
df %>%
filter(z != "C") %>%
ggplot(aes(x, y)) +
geom_point(aes(colour = factor(z))) +
geom_point(data = filter(df, z == "C"),
aes(x, y, colour = "#C0C0C0"))
...将“C”标记放入图例中,但标签错误,颜色不正确。
另一次尝试:
df %>%
filter(z != "C") %>%
ggplot(aes(x, y)) +
geom_point(aes(colour = factor(z))) +
geom_point(data = filter(df, z == "C"),
aes(x, y, colour = z))
将“C”标记放入图例中,标记正确,顺序正确,但我无法设置其颜色。
重申:如何手动设置“C”的颜色,让“A”和“B”由ggplot自动着色,并在图例中显示“A”,“B”和“C”?
答案 0 :(得分:0)
Yo可以使用scale_color_manual
ggplot(df, aes(x = x, y = y, color = z)) + geom_point()+
scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
据我所知,你只能设置全部或全部自动。从来没有试过修理过。