Как я могу получить пользовательские цвета И сделать так, чтобы у моей легенды были правильные метки (ggplot)? - PullRequest
0 голосов
/ 10 января 2020

У меня есть прекрасная гистограмма (см. Прикрепленное изображение). Карнавальные цвета

Я использовал следующий код для создания этого шедевра:

    ggplot(data=data, aes(x=docket, y=Approved, fill=EMH_Cat)) +  geom_bar(stat="identity", position="stack") + 
    labs(title="Type of Study by Project", x="Project", y="Number of Studies") + 
    theme(plot.title = element_text(size=30,hjust = 0.5)) + 
    theme(panel.background = element_rect(fill = 'white')) + 
    theme(axis.line = element_line(color="black", size = 0.5)) + 
    theme(axis.text.x= element_text(size=8,color = "black")) + 
    theme(axis.text.y = element_text(size=12, color = "black")) + 
    scale_y_continuous(breaks=seq(0,60,10)) + scale_x_discrete(labels=c("Bartletts\nFerry","Cabin\nCreek","Claytor","Emeryville","Green\nIsland","Jackson","Jennings\nRandolph","Keowee\nand\nToxaway","Loup\nCanal","Mahoning","Martin","Mason","Monadnock","Old\nHarbor","Oswegatchie\nRiver","Otter\nCreek","Salina","Tomahawk","Vanceboro","Wallowa\nFalls","Wells","Williams","York\nHaven")) + 
    theme(axis.title.x = element_text(face="bold", size=12,vjust=-0.5,hjust=0.5)) + 
    theme(axis.title.y = element_text(face="bold", size=12,vjust=2,hjust=.5)) + 
    scale_fill_discrete(name = "Categories", labels = c("Biota and Biodiversity","Connectivity and Fragmentation","Cultural Resources", "Geomorphology","Infrastructure and Design", "Landcover","Recreation", "Water Quality","Water Quantity")) + 
    theme(panel.border = element_rect(colour = "black", fill=NA),legend.box.background = element_rect(colour = "black"), legend.background = element_rect(linetype = "solid", colour = "black")) + 
    theme(legend.title.align=0.5) + theme(legend.position = c(0.09,0.7))

I использовал функцию read.csv. Мои данные выглядят так: фрагмент

Легенда не в потрясающем месте, но я могу и буду заниматься этим. Однако проблема возникает, когда я пытаюсь добавить этого маленького парня:

      scale_fill_manual(values=c("#1e7640", "#de772d", "#e815dd", "#7f6c00", "#000000", "#a03223", "#9e07f5","#2abdda", "#306ebe"))

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

Это выглядит так: argh

Я понимаю, почему R делает это, я просто не знаю, как это исправить. Я хочу иметь свои цвета и есть легенду тоже. HELP !!

1 Ответ

2 голосов
/ 10 января 2020

У вас есть scale_fill_discrete с name и labels аргументами. Вместо этого вам нужно дать те же аргументы вашему scale_fill_manual вместе с вашим values. Удалите строку scale_fill_discrete и добавьте


scale_fill_manual(
  name = "Categories",
  labels = c("Biota and Biodiversity", "Connectivity and Fragmentation",
    "Cultural Resources", "Geomorphology", "Infrastructure and Design", 
    "Landcover","Recreation", "Water Quality","Water Quantity")
  values = c("#1e7640", "#de772d", "#e815dd", "#7f6c00", "#000000",
     "#a03223", "#9e07f5","#2abdda", "#306ebe")
)
...