我创建了一个简单的数据库,使用env_var (x)和env_y (y)作为我的独立值。绘图时,自动按字母顺序重新组织变量。我尝试按env_var值重新排序env_y,但似乎代码试图创建统计数据(平均值),以便重新排序,如以下错误消息所示:
In mean.default(X[[i]], ...) :argument is not numeric or logical: returning 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发布于 2020-02-26 20:35:44
如果您希望按您定义的顺序绘制点,则必须手动设置因子级别。
env_var <- factor(env_var, levels = env_var)然后绘制它们,但是,就像用户@StupidWolf在comment中所说的,
您必须做env_y <- as.numeric(env_y),否则它仍然是一个字符。
只有这样才能创建data.frame。
env_y <- as.numeric(env_y)
env_model <- data.frame(env_var, env_y)
p <- ggplot(env_model, aes(x = env_var, y = env_y)) +
geom_point()
p

尝试将因子env_var更改为
env_var <- factor(env_var)
env_var <- factor(env_var, levels = stringr::str_sort(env_var, numeric = TRUE))看看要点的命令。
发布于 2020-02-27 20:02:57
谢谢你的解决方案!有几件事我做错了。
首先,我在创建数字向量时使用了“”,这样即使使用env_y ()参数,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),]这对我起了作用。
https://stackoverflow.com/questions/60421842
复制相似问题