Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2的小提琴图与x轴数据集中的顺序不同_R_Ggplot2_Axis Labels_Violin Plot - Fatal编程技术网

R ggplot2的小提琴图与x轴数据集中的顺序不同

R ggplot2的小提琴图与x轴数据集中的顺序不同,r,ggplot2,axis-labels,violin-plot,R,Ggplot2,Axis Labels,Violin Plot,我使用以下代码创建了模型,但在x轴上,模型名称与数据集中的顺序不一致(即“已观察”、“SVM”、“Grid_SVM”、“MARS”、“Grid_MARS”、“RF”、“Grid_RF”)。 代码中需要编辑的位置 ggplot(df1, aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) + geom_violin(trim=FALSE, fill = "palegreen") + geom_boxplot(width = .12, fil

我使用以下代码创建了模型,但在x轴上,模型名称与数据集中的顺序不一致(即“已观察”、“SVM”、“Grid_SVM”、“MARS”、“Grid_MARS”、“RF”、“Grid_RF”)。 代码中需要编辑的位置

ggplot(df1, aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) +
  geom_violin(trim=FALSE, fill = "palegreen") +
  geom_boxplot(width = .12, fill = "orange", outlier.color = "orange", outlier.size = 2) + 
  labs(title = "Pb Adsorption distribution by Models over testing phase") + xlab("Models") + ylab("Pb Adsorption distribution")+ theme_classic() +
  theme(
  plot.title = element_text(size = 12, colour = "black", face = "bold"), #for Main Title
  axis.title.x = element_text(size = 12, colour = "black", face = "bold"), #for axix title
  axis.title.y = element_text(size = 12, colour = "black", face = "bold"),
  axis.text.x = element_text(face="bold", color="darkblue", size=12, angle=0), #for axis tick
  axis.text.y = element_text(face="bold", color="black", size=12, angle=0))

默认情况下,ggplot2按字母顺序打印字符向量。要将指定的顺序放入绘图,只需使用dplyr并将列创建为
因子()
,然后指定所需的级别。然后ggplot2应该根据需要进行绘制

编辑#1 一种方法是将
df1
数据帧与ggplot2命令字符串分开修改。你可以这样做

df1 <- df1 %>%
  mutate( Model=factor(Model,levels=c("Observed", "SVM", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF")) )
最初的建议是覆盖数据。然后在新链中生成绘图

df1 <- df1 %>%
  mutate( Model=factor(Model,levels=c("Observed", "SVM", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF")) )

ggplot( df1, aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) +
  geom_violin(trim=FALSE, fill = "palegreen") +
  geom_boxplot(width = .12, fill = "orange", outlier.color = "orange", outlier.size = 2) + 
  labs(title = "Pb Adsorption distribution by Models over testing phase") + xlab("Models") + ylab("Pb Adsorption distribution")+ theme_classic() +
  theme(
  plot.title = element_text(size = 12, colour = "black", face = "bold"), #for Main Title
  axis.title.x = element_text(size = 12, colour = "black", face = "bold"), #for axix title
  axis.title.y = element_text(size = 12, colour = "black", face = "bold"),
  axis.text.x = element_text(face="bold", color="darkblue", size=12, angle=0), #for axis tick
  axis.text.y = element_text(face="bold", color="black", size=12, angle=0))
df1%
突变(模型=因子(模型,级别=c(“观察”、“支持向量机”、“网格支持向量机”、“火星”、“网格火星”、“RF”、“网格RF”)))
ggplot(df1,aes(x=Model,y=Pb),cex.lab=18,cex.axis=18)+
几何小提琴(修剪=假,填充=浅绿色)+
geom_箱线图(宽度=0.12,填充=“橙色”,离群值.color=“橙色”,离群值.size=2)+
实验室(title=“测试阶段模型的铅吸附分布”)+xlab(“模型”)+ylab(“铅吸附分布”)+theme_classic()+
主题(
plot.title=element_text(大小=12,color=“black”,face=“bold”),#主标题
axis.title.x=元素_文本(大小=12,color=“black”,face=“bold”),#用于axix标题
axis.title.y=元素\文本(大小=12,颜色=“黑色”,面=“粗体”),
axis.text.x=元素_文本(face=“bold”,color=“darkblue”,size=12,angle=0),#用于轴刻度
axis.text.y=元素\文本(face=“bold”,color=“black”,size=12,angle=0))

上述任何一项都可以。

ggplot2还有一个
顺序
美学。我从未使用过它,但您可能也想尝试一下。感谢您的及时回复,对于第一个答案,如何执行,请描述或给出一个使用时的提示。最新建议:错误:应使用
aes()或
aes\uu()
创建映射。运行
rlang::last_error()`查看错误发生的位置。前三行:df1%变异(模型=因子(模型,级别=c(“观察”,“支持向量机”,“网格支持向量机”,“火星”,“网格火星”,“射频”,“网格射频”))%>%ggplot(df1,aes(x=模型,y=Pb))哇,非常感谢,我使用了原始建议,然后调用了ggplot,这项工作非常完美。不过,我也会保留第二个建议,非常感谢。
df1 <- df1 %>%
  mutate( Model=factor(Model,levels=c("Observed", "SVM", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF")) )

ggplot( df1, aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) +
  geom_violin(trim=FALSE, fill = "palegreen") +
  geom_boxplot(width = .12, fill = "orange", outlier.color = "orange", outlier.size = 2) + 
  labs(title = "Pb Adsorption distribution by Models over testing phase") + xlab("Models") + ylab("Pb Adsorption distribution")+ theme_classic() +
  theme(
  plot.title = element_text(size = 12, colour = "black", face = "bold"), #for Main Title
  axis.title.x = element_text(size = 12, colour = "black", face = "bold"), #for axix title
  axis.title.y = element_text(size = 12, colour = "black", face = "bold"),
  axis.text.x = element_text(face="bold", color="darkblue", size=12, angle=0), #for axis tick
  axis.text.y = element_text(face="bold", color="black", size=12, angle=0))