постройте трендовые линии отдельно - PullRequest
0 голосов
/ 19 июня 2019

Я хотел бы нарисовать график, похожий на рисунок 2, но я не в состоянии построить линии тренда для каждого типа среды обитания, а только общую линию.

Кто-нибудь знает, какую команду мне написать, чтобы получить это?

Кроме того, я хотел бы также указать масштаб оси Y (0, 0,5, 1, 1,5 ...) .

library(ggplot2)
pd <- position_dodge(0.1)
ggplot(dados, aes(x=sp, y=abund, colour=habitat, group = 1)) + 
  geom_errorbar(aes(ymin=abund-dv, ymax=abund+dv), colour="black", width=.1, position=pd) +
 geom_point(position=pd, size=4)+
  geom_smooth(method = "lm", aes(fill=habitat))+
  scale_fill_brewer(palette="Dark2") + 
  scale_colour_brewer(palette="Dark2")+
  theme_bw()
sp  body_mass   habitat abund   dv
AAOtol_cras 1206.61 FO  -0.021666667    -0.010833333
ABMiop_tal  1248.86 FO  -0.021666667    -0.010833333
ACCLep_cap  1500    FO  -0.041666667    -0.102062073
ADGenet_gen 1756.17 FO  -0.047619048    -0.162590417
BAThry_swin 4000    FO  -0.382978723    -0.28152599
BDPhil_mont 6000    FO  -0.725806452    -0.377581583
CALept_serv 11999.96    FO  -0.433333333    -0.287270381
AAOtol_cras 1206.61 S   -0.021666667    -0.010833333
ABMiop_tal  1248.86 S   -0.021666667    -0.010833333
ACCLep_cap  1500    S   -0.047619048    -0.109108945
ADGenet_gen 1756.17 S   -0.236842105    -0.118421053
BAThry_swin 4000    S   -0.475  -0.29930475
BDPhil_mont 6000    S   -0.944444444    -0.446325385
CALept_serv 11999.96    S   -0.590909091    -0.311003287

Текущий участок:

* +1012 *enter image description here

Желаемый участок:

enter image description here

1 Ответ

1 голос
/ 19 июня 2019

Вам необходимо использовать group в aes() с переменной habitat, чтобы она также передавалась в geom_smooth.

library(ggplot2)

ggplot(dados, aes(x=sp, y=abund, colour=habitat, group = habitat)) + 
  geom_errorbar(aes(ymin=abund-dv, ymax=abund+dv), 
                colour="black", width=.1, position=position_dodge(0.1)) +
  geom_point(position=position_dodge(0.1), size=4) +
  geom_smooth(method = "lm", aes(color=habitat)) +
  scale_fill_brewer(palette="Dark2") + 
  scale_colour_brewer(palette="Dark2") +
  theme_bw()

Вы можете использовать se=FALSE в geom_smooth, чтобы избавиться от серых доверительных интервалов, или использовать fill вместо / с color, чтобы получить их того же цвета, что и ваши очки.

Данные:

dados <- read.table(text="sp    body_mass   habitat abund   dv
AAOtol_cras 1206.61 FO  -0.021666667    -0.010833333
ABMiop_tal  1248.86 FO  -0.021666667    -0.010833333
ACCLep_cap  1500    FO  -0.041666667    -0.102062073
ADGenet_gen 1756.17 FO  -0.047619048    -0.162590417
BAThry_swin 4000    FO  -0.382978723    -0.28152599
BDPhil_mont 6000    FO  -0.725806452    -0.377581583
CALept_serv 11999.96    FO  -0.433333333    -0.287270381
AAOtol_cras 1206.61 S   -0.021666667    -0.010833333
ABMiop_tal  1248.86 S   -0.021666667    -0.010833333
ACCLep_cap  1500    S   -0.047619048    -0.109108945
ADGenet_gen 1756.17 S   -0.236842105    -0.118421053
BAThry_swin 4000    S   -0.475  -0.29930475
BDPhil_mont 6000    S   -0.944444444    -0.446325385
CALept_serv 11999.96    S   -0.590909091    -0.311003287", header=T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...