R Ggplot不重新排序变量;警告消息需要估计方法

R Ggplot不重新排序变量;警告消息需要估计方法,r,ggplot2,R,Ggplot2,我用env_var(x)和env_y(y)作为独立值创建了一个简单的数据库。打印时,ggplot自动按字母顺序重新组织变量。我试图通过env_y值对env_var重新排序,但代码似乎试图创建统计数据(平均值),以便按照以下错误消息所示重新排序: 平均值。默认值(X[[i]],…):参数不是数字或逻辑参数:返回NA 我不需要得到平均值,这是一个非常简单的数据集,其中一个env_y值对应一个env_var变量。我在另一篇文章中读到,你应该自己组织数据,而不是像我之前做的那样使用aes。我按我希望的顺

我用
env_var(x)
env_y(y)
作为独立值创建了一个简单的数据库。打印时,ggplot自动按字母顺序重新组织变量。我试图通过
env_y
值对
env_var
重新排序,但代码似乎试图创建统计数据(平均值),以便按照以下错误消息所示重新排序:

平均值。默认值(X[[i]],…):参数不是数字或逻辑参数:返回NA

我不需要得到平均值,这是一个非常简单的数据集,其中一个
env_y
值对应一个
env_var
变量。我在另一篇文章中读到,你应该自己组织数据,而不是像我之前做的那样使用aes。我按我希望的顺序输入变量。我还确保将
env_y
设置为数字,如前一篇文章所示。我试着使用
forcats
,但这个解决方案似乎也包括估算平均值。是否有参数可以在不执行任何统计的情况下按原始值重新排序

*注意:我尝试了
geom_point()
geom_point(stat=“identity”)
参数,以防出现问题

env_var<-    c('bio6','bio15','bio18','bio12','bio5','bio1','bio17','bio19','bio9','bio7','bio8')

env_y<- c('43.4','25.2','12.1','3.7','2.8','2.7','2.7','2.3','1.8','1.7','1.7')

as.numeric(env_y)
as.factor(env_var)
env_model <- data.frame(env_var, env_y)

p <- ggplot(env_model, aes(x = reorder(env_var,env_y), y = env_y)) +
    geom_point()
p

env_var如果要按定义顺序绘制点,必须手动设置因子级别

env_var <- factor(env_var, levels = env_var)

并查看积分顺序。

谢谢您的解决方案!有几件事我做错了

首先,我在创建数字向量时使用了“”,因此R即使在使用as.numeric()参数时也无法将环境识别为数字

其次,似乎要对数据集进行重新排序,我必须将排序存储在数据框中,如下所示:

env_model$env_var <- with(env_model, reorder(env_var,-env_y))
#or 
env_model <- env_model[order(env_model$env_y, decreasing=T),]

env_model$env_var您必须先执行env_y,然后再将其放入data.frame中,检查类(env_var);类别(环境)
env_var <- factor(env_var)
env_var <- factor(env_var, levels = stringr::str_sort(env_var, numeric = TRUE))
env_model$env_var <- with(env_model, reorder(env_var,-env_y))
#or 
env_model <- env_model[order(env_model$env_y, decreasing=T),]