#r #ggplot2
Вопрос:
Я недавно обновил R и ggplot2 до версий (4.1.1 и 3.3.5 соответственно). Я использовал этот код для создания графиков в ggplot:
rejA<-c(0.05,0.10,0.00,0.05)
Tr<-c("CornnmalenxnCornnfemale","CornnmalenxnWheatnfemale","WheatnmalenxnCornnfemale","WheatnmalenxnWheatnfemale")
Matingdiet<-c("Same diet","Different diets","Different diets", "Same diet")
d<-as.data.frame(cbind(Tr,rejA,Matingdiet))
d$rejA<-as.numeric(as.character(d$rejA))
d$Matingdiet<-factor(d$Matingdiet,levels = rev(levels(d$Matingdiet)))
mycol<-RColorBrewer::brewer.pal(9,"YlOrBr")[c(7,4)]
dev.new()
pl<-ggplot(data = d, aes(x=Tr, y=rejA))
geom_col(aes( fill=Matingdiet))
labs(x = "Mating pairs",fill="Male and female from", y = "Proportion of mates rejected")
scale_y_continuous(limits=c(0,1),expand = c(0,0))
scale_fill_manual(values=mycol)
theme_bw()
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line.y = element_line(colour = "black"),
axis.text=element_text(size = 10),
strip.background = element_blank(),
axis.text.y=element_text(size = 10),
panel.border=element_blank(),
panel.spacing.x = unit(1,"line"),
strip.text.x = element_text(size = 20))
geom_hline(yintercept = 0)
pl
Однако цвета не отображаются на графике. Я использовал тот же код ранее, чтобы получить этот сюжет
Однако теперь, когда я запускаю один и тот же код, все полосы становятся серыми, а легенды нет.
Я попытался изменить цвета в коде
pl<-ggplot(data = d, aes(x=Tr, y=rejA))
geom_col(aes( fill=Matingdiet))
labs(x = "Mating pairs",fill="Male and female from", y = "Proportion of mates rejected")
scale_y_continuous(limits=c(0,1),expand = c(0,0))
scale_fill_manual(values=c("red","blue"))
theme_bw()
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line.y = element_line(colour = "black"),
axis.text=element_text(size = 10),
strip.background = element_blank(),
axis.text.y=element_text(size = 10),
panel.border=element_blank(),
panel.spacing.x = unit(1,"line"),
strip.text.x = element_text(size = 20))
geom_hline(yintercept = 0)
pl
Это также вернет график со всеми полосами серого цвета. Я не уверен, что попробовать сейчас, тем более, что это работало раньше (в версии 3.5 R).
Ответ №1:
Я не уверен, но в очереди
d$Matingdiet<-factor(d$Matingdiet,levels = rev(levels(d$Matingdiet)))
изменение данных d
с
Tr rejA Matingdiet
1 CornnmalenxnCornnfemale 0.05 Same diet
2 CornnmalenxnWheatnfemale 0.10 Different diets
3 WheatnmalenxnCornnfemale 0.00 Different diets
4 WheatnmalenxnWheatnfemale 0.05 Same diet
Для
Tr rejA Matingdiet
1 CornnmalenxnCornnfemale 0.05 <NA>
2 CornnmalenxnWheatnfemale 0.10 <NA>
3 WheatnmalenxnCornnfemale 0.00 <NA>
4 WheatnmalenxnWheatnfemale 0.05 <NA>
Вы заполняете таблицу буквой NA
s. Проблема levels(d$Matingdiet)
в том , что Matingdiet
это еще не фактор, поэтому у него его нет levels
. Я не уверен в вашей цели, но попробуйте d$Matingdiet <- factor(d$Matingdiet)
сначала добавить, тогда d$Matingdiet<-factor(d$Matingdiet,levels = rev(levels(d$Matingdiet)))
это не вызовет никаких проблем.
Комментарии:
1. Спасибо, я попробую это сделать. Я думаю, что все читалось как строка символов, а не факторы, так что вот где возникла проблема.