#r #ggplot2 #linegraph
Вопрос:
У меня возникли две неприятные проблемы (довольно новые для r!).
- Я пытаюсь упорядочить ось x по функциям, основываясь на порядке в моем df. Когда я использую scale_shape_manual(метки = c(«196», «176», «194»)), график становится очень шатким.
- Я пытаюсь исправить свою легенду. Я бы хотел, чтобы в нем был список «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")