我正在尝试绘制具有连续色标的点的散点图。不过,由于我的数据不是线性的,而且我的大多数数据点都具有相同的颜色(无法识别),因此我将设置自己的比例尺。
我的代码现在看起来像这样:
cut.values <- c(4, 5, 5.5, 6.5, 7, 7.5)
iris$cuts <- cut(iris$Sepal.Length, cut.values)
library(dplyr)
pick <- function(condition){
function(d) d %>% filter_(condition)
}
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, color = cuts), label = Sepal.Length) +
geom_point(data = pick(~Species == "setosa"), size = 5, shape = 16, show.legend = F) +
geom_point(data = pick(~Species == "versicolor"), size = 5, shape = 17, show.legend = F) +
scale_color_brewer("", palette = "Spectral") +
theme_bw()
然后我决定将形状更改为21
和22
,以使每个点都具有黑色边框以使其突出,然后执行以下操作:
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, fill = cuts), label = Sepal.Length) +
geom_point(data = pick(~Species == "setosa"), size = 5, shape = 21, show.legend = F) +
geom_point(data = pick(~Species == "versicolor"), size = 5, shape = 22, show.legend = F) +
scale_color_brewer("", palette = "Spectral") +
theme_bw()
但是,即使我使用相同的"Spectral" palette
,这似乎也会改变点的颜色。命令的某些部分覆盖了我尝试使用的配色方案吗?在使用shape 21
和22
时如何保持相同的配色方案?
(因为我正在使用cuts
定义自己的色阶,所以我正在使用此问题的第一个答案(Create discrete color bar with varying interval widths and no spacing between legend levels)中的代码,并且由于此原因使用了palette
使用scale_color_brewer
命令,我必须坚持使用scale_color_brewer
来保持颜色点在数据点和我用代码创建的颜色条之间保持一致。)
答案 0 :(得分:1)
scale_color_brewer()
默认为美观"colour"
。如果您分配给"fill"
,那么您的绘图调色板将是正确的!
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, fill = cuts), label = Sepal.Length) +
geom_point(data = pick(~Species == "setosa"), size = 5, shape = 21, show.legend = F) +
geom_point(data = pick(~Species == "versicolor"), size = 5, shape = 22, show.legend = F) +
scale_color_brewer(palette = "Spectral", aesthetics = "fill") +
theme_bw()