2016-01-19 2 views
0

мой кодЕсть ли способ overide scale_colour_manua имя

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"), но это переопределяет цвета и дает мне совершенно разные цвета Это даст это предупреждение;

Шкала для 'цвета' уже присутствует. Добавление другой шкалы для «цвет», которая заменит существующий масштаб.

любая идея?

ответ

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) 
+0

вы имеете в виду, вместо того, чтобы использовать scale_colour_manual, использовать cale_color_brewer? –

+0

Да, вот что я имею в виду. – Gregor

+0

что-то вроде этого; myColors <- brewer.pal ("Set1") names (myColors) <- levels (software_length $ type) my_col_scale <- function (name = "Software", ...) { scale_color_brewer (values ​​= myColors, name = name, ...)) } # и это будет подходящим для уровней более 5? –

2

Вы можете обновить имя для colScale используя рассуждение name

colScale$name<-"type" 

Если вы не хотите, чтобы изменить его в глобальном масштабе, то сохраните его с другим именем, а затем обновить

colScale2<-colScale 
colScale2$name<-"type" 
Смежные вопросы