R中数据可视化的顺序问题
Problem of the order of visualizing the data in R
你好,我正在尝试使用 R 以箱线图的形式可视化一些数据。但是,数据在横坐标 x 中的显示顺序错误。我试图修复这个函数 scale_x_discrete(limits=c("Fallow", "Mustard", "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"))
这是显示的数字:
情节应该是这样显示的:
csv中的数据是这样写的:
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
尝试对您的代码进行此更改。您可以使用 data
上的 aggregate()
计算标签的位置,然后与您在 geom_text()
中使用的对象合并,通过某个标量(假设为 10)调整位置。这里是代码(我已经更新了,因为我没有注意到问题是关于轴标签的。非常感谢并归功于 @Ben):
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"))
输出:
你好,我正在尝试使用 R 以箱线图的形式可视化一些数据。但是,数据在横坐标 x 中的显示顺序错误。我试图修复这个函数 scale_x_discrete(limits=c("Fallow", "Mustard", "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"))
这是显示的数字:
情节应该是这样显示的:
csv中的数据是这样写的:
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
尝试对您的代码进行此更改。您可以使用 data
上的 aggregate()
计算标签的位置,然后与您在 geom_text()
中使用的对象合并,通过某个标量(假设为 10)调整位置。这里是代码(我已经更新了,因为我没有注意到问题是关于轴标签的。非常感谢并归功于 @Ben):
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"))
输出: