R中数据可视化的顺序问题

R中数据可视化的顺序问题,r,boxplot,R,Boxplot,您好,我正在尝试使用R以箱线图的形式可视化一些数据。但是,数据在横坐标x中的显示顺序错误。我试图解决这个问题,这个函数scale\x\u discrete(limits=c(“Fallow”、“芥末”、“Mix4”、“Mix12”)),这部分地解决了这个问题,因为一些小写字母(a、ac、bc、c)的顺序不正确。正确的顺序是(a,ab,bc,c) 这是绘图的代码: library(tidyverse) library(lme4) library(emmeans) library(multcomp)

您好,我正在尝试使用R以箱线图的形式可视化一些数据。但是,数据在横坐标x中的显示顺序错误。我试图解决这个问题,这个函数
scale\x\u discrete(limits=c(“Fallow”、“芥末”、“Mix4”、“Mix12”))
,这部分地解决了这个问题,因为一些小写字母(a、ac、bc、c)的顺序不正确。正确的顺序是(a,ab,bc,c)

这是绘图的代码:

library(tidyverse)
library(lme4)
library(emmeans)
library(multcomp)

# set theme for ggplot
theme_set(theme_bw())
theme_myBW <- theme(axis.title.x = element_text(size = 10, color = "black"), 
                    axis.title.y = element_text(angle = 90, vjust = 1.5, size = 10, color = "black"),
                    axis.text.x = element_text(size = 10, color = "black"), 
                    axis.text.y = element_text(size = 10, color = "black"), 
                    axis.ticks =element_line(colour="black"),
                    strip.text.x = element_text(size = 10, color = "black"),
                    strip.background = element_blank(),
                    panel.border =element_rect(colour="black", fill=NA), 
                    panel.grid.major = element_blank(),
                    panel.grid.minor = element_blank(),
                    plot.title = element_text(size = 12, hjust=0.5),
                    #legend.position=c(0.0,1.0), 
                    #legend.justification=c(0,1), 
                    legend.text = element_text(size = 10),
                    legend.text.align=0,
                    legend.title =  element_text(size = 10), 
                    legend.key = element_rect(colour="white", fill = "white"),
                    legend.key.size = unit(5, "mm"),
                    legend.background = element_blank())

# set vector with colors and label
COL <- c("Fallow" = "slategray", "Mustard" = "red3" , "Mix4" = "orchid3", "Mix12"= "orange4")
SHP <- c("Fallow"=21,"Mustard"=22,"Mix4"=23, "Mix12"=24)


# generate data from csv file
data <- read.csv2("data.csv", as.is=T)
data$NEE <- as.numeric(data$NEE)


lm_NEE <- lmer(NEE ~ cc_variant + (1|Date), data=data)
df_NEE <- cld(emmeans(lm_NEE, specs ="cc_variant"), Letters=letters, sort=FALSE)

# Plot for BFS
ggplot(data, aes(x= cc_variant, y=NEE, fill= cc_variant))+
  geom_boxplot()+
  scale_fill_manual(values = COL, guide=FALSE)+
  geom_text(data= df_NEE ,aes(y=-600,x=cc_variant, label=.group))+
  labs(x="Catch crop variant",  y=expression("NEE (mg CO"[2]~"- C"~m^{-2}~h^{-1}~")"), fill="")+
  theme_myBW+scale_x_discrete(limits=c("Fallow", "Mustard", "Mix4", "Mix12"))

尝试对代码进行此更改。您可以在
数据上使用
aggregate()
计算标签的位置,然后与在
geom_text()
中使用的对象合并,通过一些标量调整位置(比如10)。这里是代码(我已经更新了,因为我没有注意到问题是关于axis标签的。非常感谢并感谢@Ben):

库(tidyverse)
图书馆(lme4)
图书馆(emmeans)
图书馆(multcomp)
#从csv文件生成数据

数据尝试对代码进行此更改。您可以在
数据上使用
aggregate()
计算标签的位置,然后与在
geom_text()
中使用的对象合并,通过一些标量调整位置(比如10)。这里是代码(我已经更新了,因为我没有注意到问题是关于axis标签的。非常感谢并感谢@Ben):

库(tidyverse)
图书馆(lme4)
图书馆(emmeans)
图书馆(multcomp)
#从csv文件生成数据

您的
cc\u变量的数据不是一个因素。尝试使用
data$cc_variant@Ben wow!在对这个问题进行了太多的讨论之后,我没有希望找到解决办法!这是一个魔术!谢谢!您的
cc\u变体
不是一个因素。尝试使用
data$cc_variant@Ben wow!在对这个问题进行了太多的讨论之后,我没有希望找到解决办法!这是一个魔术!谢谢!谢谢你,本和你,都提出了一个很好的解决方案!谢谢你,本和你,都提出了一个很好的解决方案!
cc_variant;Date;NEE
Fallow;18.10.2016;52.31861
Fallow;19.10.2016;36.75274
Fallow;24.10.2016;34.59082
Mix4;18.10.2016;-516.86837
Mix12;18.10.2016;-617.11000
Mustard;18.10.2016;-182.24568
Mix4;19.10.2016;-102.63776
Mix12;19.10.2016;-431.55887
Mustard;19.10.2016;-139.04121
Mustard;24.10.2016;-114.09939
Mix12;24.10.2016;-400.21260
Mix4;24.10.2016;-175.33208
library(tidyverse)
library(lme4)
library(emmeans)
library(multcomp)
# generate data from csv file
data <- read.csv2("data.csv", as.is=T)
data$NEE <- as.numeric(data$NEE)
data$cc_variant<-factor(data$cc_variant, levels = c("Fallow", "Mustard", "Mix4", "Mix12"))
#Model
lm_NEE <- lmer(NEE ~ cc_variant + (1|Date), data=data)
df_NEE <- cld(emmeans(lm_NEE, specs ="cc_variant"), Letters=letters, sort=FALSE)
#Compute Position
Pos <- aggregate(NEE~cc_variant,data,min)
# Plot for BFS
ggplot(data, aes(x= cc_variant, y=NEE, fill= cc_variant))+
  geom_boxplot()+
  scale_fill_manual(values = COL, guide=FALSE)+
  geom_text(data= merge(df_NEE,Pos) ,
            aes(y=NEE-10,x=cc_variant, label=.group))+
  labs(x="Catch crop variant",  y=expression("NEE (mg CO"[2]~"- C"~m^{-2}~h^{-1}~")"), fill="")+
  theme_myBW+scale_x_discrete(limits=c("Fallow", "Mustard", "Mix4", "Mix12"))