所以我想在散点图中引入更多样化的颜色模式,因为我有高n并且标准集的辨别属性不够高。所以,我已经生成了一个有效的颜色矢量,但现在我无法正确地获得传奇。我要么没有传说,也没有带有颜色名称的传奇。我很确定我正在混淆美学和属性,但我不知道自己做错了什么。
我的代码和三次尝试如下。我想要实现的是与我创建的颜色矢量(col_sample)匹配的颜色,但是匹配数据框中名称列的图例的名称。
#dataframe
df1 <- data.frame(name = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "a", "b", "c", "d", "e"),
n = rep(1:31, 1),
value = rep(31:1, 1))
df1$name <- as.factor(df1$name)
#produce color vector
color <- grDevices::colors()[grep('gr(a|e)y', grDevices::colors(), invert = T)]
col_sample <- sample(color, 31)
col_sample <- as.vector(col_sample)
#scatterplot
median_scatter <- ggplot(data = df1,
aes(x = n,
y = value,
col = name))
#try 1: these colors are too similar
median_scatter +
geom_point()
#try 2: t he legend dissappears
median_scatter +
geom_point(col = col_sample)
#try 3: t he legend dissappears
median_scatter +
geom_point(aes(col = col_sample))
答案 0 :(得分:2)
您可以使用scale_colour_manual
手动定义色阶。
median_scatter <- ggplot(data = df1,
aes(x = n,
y = value,
colour = name))
median_scatter +
geom_point() +
scale_colour_manual(values=col_sample)
请注意,legend
与aes
相关联。在试验#2中,您通过在aes(col=name)
中为ggplot
指定颜色矢量来覆盖父col
中的颜色美学geom_point
。 name
和col_sample
之间没有关联,因此没有传说。
在尝试#3中,您已重新分配aes(col=col_sample)
,因此颜色名称现在变为分配给默认颜色的变量。