我的代码是
myColors <- brewer.pal(5,"Set1")
names(myColors) <- levels(software_length$type)
colScale <- scale_colour_manual(values = myColors,name="Software")
在我的ggplot中,我使用了这个定义的手动颜色colScale,比如
ggplot(data, aes(efficiency)) + theme_gray() + colScale
但我想将名称从软件更改为类型,我尝试使用
scale_color_discrete(name="type")
但这会覆盖颜色并给我完全不同的颜色
它会发出这个警告;
'color'的比例已经存在。添加另一个比例 'color',它将取代现有的规模。
任何想法?
答案 0 :(得分:2)
您可以使用参数colScale
name
的名称
colScale$name<-"type"
如果您不想全局更改,请使用其他名称保存,然后更新
colScale2<-colScale
colScale2$name<-"type"
答案 1 :(得分:1)
另一种选择是将自定义比例重新定义为函数:
myColors <- brewer.pal(5,"Set1")
names(myColors) <- levels(software_length$type)
my_col_scale <- function(name = "Software", ...) {
scale_colour_manual(values = myColors, name = name, ...))
}
这样,默认名称将为"Software"
,但您可以按正常方式调整(或任何其他scale_colour_manual
设置)。
ggplot(data, aes(efficiency)) +
theme_gray() +
my_col_scale(name = "type")
您可能也对scale_color_brewer
感兴趣......您的比例基本上是scale_color_brewer(palette = 1, name = "Software")
,但只有在有5个级别时才有效(而scale_color_brewer
在数量上会灵活水平)。
使用scale_color_brewer
的两个例子:
# the `cut` column has 5 levels
ggplot(head(diamonds, 200), aes(x = carat, y = price, color = cut)) +
geom_point() +
scale_color_brewer(palette = 1)
# the `clarity` column has 7 levels
# scale_color_brewer makes the change automatically
ggplot(head(diamonds, 200), aes(x = carat, y = price, color = clarity)) +
geom_point() +
scale_color_brewer(palette = 1)