Как переименовать легенду фигуры в ggplot?aes дает ошибку длины - PullRequest
0 голосов
/ 14 апреля 2019

Я новичок в использовании R и столкнулся с проблемой.

Я создал диаграмму рассеяния, используя geom_point.

scatterplot

Мне удалось переименовать метки сетки фасетов, но я не знаю, как переименовать легенду рисунка. Я попытался переименовать строку geom_point(aes(colour = Diet)) в geom_point(aes(colour = diet_names)), но возникает следующая ошибка:

Error: Aesthetics must be either length 1 or the same as the data (23): colour.

Если я удаляю все, кроме одного из значений ниже (например, просто оставляя в fish_or = "Fish"), ошибка не возникает, но, очевидно, я не хочу, чтобы в таблице было только одно цветное значение.

    diet_names <- c(
      fish_or = "Fish" ,
      fruit_pu = "Fruit" ,
      insects_nectar_bl = "Insects & Nectar" ,
      insects_re = "Insects" ,
      seeds_gr = "Seeds")

Я бы хотел отредактировать легенду во что-то более понятное, так как это данные для постера, который я делаю. Спасибо:)

Полный код:

library(ggplot2)
library(dplyr)
Birdbeaks <- read.csv("Birdbeaks.csv", stringsAsFactors = FALSE)

diet_names <- c(
fish_or = "Fish" ,
fruit_pu = "Fruit" ,
insects_nectar_bl = "Insects & Nectar" ,
insects_re = "Insects" ,
seeds_gr = "Seeds") 

ggplot(Birdbeaks, aes(bill_lengthavg, bill_depthavg)) +
geom_point(aes(colour = diet)) +
labs(x = "Bill Length(cm)", y = "Bill Depth(cm)", colour = "Diet")+ 
guides(col = guide_legend(override.aes = list(shape = 15, size = 5))) +
theme_update()+
facet_grid(~diet, scales="fixed", labeller = as_labeller(diet_names))

1 Ответ

1 голос
/ 14 апреля 2019

Надеюсь, это полезно

library(magrittr)
library(dplyr)
library(ggplot2)

    Birdbeaks %>%
      mutate(diet = case_when(
        diet == "fish_or" ~ "Fish",
        diet == "fruit_pu" ~ "Fruit",
        diet == "insects_nectar_bl" ~ "Insects & Nectar",
        diet == "insects_re" ~ "Insects",
        diet == "seeds_gr" ~ "Seeds"
      )) %>%
      ggplot(aes(bill_lengthavg, bill_depthavg)) +
        geom_point(aes(colour = diet)) +
        labs(x = "Bill Length(cm)", y = "Bill Depth(cm)", colour = "Diet") +
        guides(col = guide_legend(override.aes = list(shape = 15, size = 5))) +
        theme_update() +
        facet_grid(~diet, scales = "fixed")
...