Вопрос с легендой и упорядочением оси x в ggplot R

#r #ggplot2 #linegraph

Вопрос:

У меня возникли две неприятные проблемы (довольно новые для r!).

  1. Я пытаюсь упорядочить ось x по функциям, основываясь на порядке в моем df. Когда я использую scale_shape_manual(метки = c(«196», «176», «194»)), график становится очень шатким.
  2. Я пытаюсь исправить свою легенду. Я бы хотел, чтобы в нем был список «196», «176», «194» по порядку, а не 15, 16, 17. Когда я использую scale_fill_manual, я получаю сообщение об ошибке: Предупреждение: guides(lt;scalegt; = FALSE) устарело. Пожалуйста, используйте guides(lt;scalegt; = "none") вместо этого. Я не знаю другого способа вручную изменить текст в легендах.
 df lt;- data.frame(Feature = c(196, 176, 194),  NISP = c(65.26548673, 64.09090909, 72.16494845),  Bio = c(18.53298346, 10.68950428, 54.19047619),  MNI = c(30, 35, 58))   library(ggplot2)    Graph lt;- ggplot(df, aes(x=Feature))    geom_line(aes(y = NISP), color = "black")     geom_line(aes(y = MNI), color = "black")    geom_line(aes(y = Bio), color = "black")   geom_point(aes(y = NISP, shape="16", size=2))   geom_point(aes(y = MNI, shape="15", size=2))   geom_point(aes(y = Bio, shape="17", size=2))    ylab("Percentage")   ggtitle("Percent MNI, NISP, and Biomass")     guides(color = FALSE, size = FALSE)  Graph   

Комментарии:

1. Если переменная функция является категориальным значением, то вы должны указать, что: Feature = as.factor(c(196, 176, 194))

2. Чтобы изменить порядок оси x, используйте aes(x= fct_inorder(Feature))

Ответ №1:

ggplot2 лучше всего работает с данными в «длинной» форме, в то время как у вас возникают некоторые проблемы, потому что ваши данные находятся в «широком» формате. Все станет проще, если мы tidyr перейдем на длинный формат, и я считаю, что это решит проблемы, с которыми вы сталкиваетесь:

 df lt;- data.frame(Feature = c(196, 176, 194),  NISP = c(65.26548673, 64.09090909, 72.16494845),  Bio = c(18.53298346, 10.68950428, 54.19047619),  MNI = c(30, 35, 58))  library(ggplot2) library(tidyr) library(dplyr)  df %gt;%  pivot_longer(cols = -Feature) %gt;%  mutate(Feature=factor(Feature, levels=unique(Feature))) %gt;%  ggplot(aes(x=Feature, y=value))    geom_line(aes(group=name))    geom_point(aes(shape=name), size=2)    scale_shape_manual(values = c(16, 15, 17))    ylab("Percentage")   ggtitle("Percent MNI, NISP, and Biomass")  

введите описание изображения здесь