固定r排序值方法
我试图用ggplot做一个图表,但R有一个愚蠢的排序方法。它将第一个数字排序为1-9,而不是最大值,因此例如100k小于2。有人能告诉我怎么解决这个问题吗固定r排序值方法,r,ggplot2,R,Ggplot2,我试图用ggplot做一个图表,但R有一个愚蠢的排序方法。它将第一个数字排序为1-9,而不是最大值,因此例如100k小于2。有人能告诉我怎么解决这个问题吗 ggplot(AWD,aes(nationality, discipline, size = money)) + geom_point() + theme(text = element_text(size=25),axis.text.x = element_text(angle=90, hjust=1,
ggplot(AWD,aes(nationality, discipline, size = money)) +
geom_point() +
theme(text = element_text(size=25),axis.text.x = element_text(angle=90,
hjust=1, vjust=0.4))+
labs(title = "Roznica w wielkosci zarobkow sportowcow roznych dziedzin
dla kazdego panstwa", x="Reprezentowane panstwo", y="Rodzaj sportu",
fill="Poziom zarobow")
以下是可复制的示例:
AWD <- data.frame(name = c("Aaron Donald", "Aaron Rodgers", "Albert Pujols", "Alexis SA¡nchez"),
nationality = c("Argentyna", "Brazylia", "Chile", "Dominikana"),
discipline = c("Baseball", "Boks", "Formula 1", "Futbol amerykanski"),
money = c("41,400,000", "89,300,000", "100,000,000", "30,700,000"))
AWD$money <- as.factor(AWD$money)
AWD观察到的行为的原因是,因子级别被处理为字符串。因此,排序是按字母顺序进行的。这导致“100”按升序位于“99”之前
解决方法有点棘手,我使用了stringr包来简化字符串的操作。剩下的是普通的R。如果您不介意附加的依赖项,那么使用dplyr或类似的包可能会有更优雅的方式
由于我的编辑尚未可见,以下是我用作基线的数据:
AWD <- data.frame(
name = c("Aaron Donald", "Aaron Rodgers", "Albert Pujols", "Alexis SA¡nchez"),
nationality = c("Argentyna", "Brazylia", "Chile", "Dominikana"),
discipline = c("Baseball", "Boks", "Formula 1", "Futbol amerykanski"),
money = c("41,400,000", "89,300,000", "100,000,000", "30,700,000"))
AWD$money <- as.factor(AWD$money)
AWD,这是因为变量被视为一个因子。尝试删除as.factor
,看看这是否解决了问题。这并不愚蠢,只是没有读懂你的心思。你没有做过任何可以让任何东西按计数排序的事情。将大小作为一个因子似乎是一个奇怪的选择。你不想让它成为一个连续变量吗?为了提供更多帮助,我们需要看到一个“我删除了as.factor,但它没有改变”的图表看起来完全一样。我喜欢人们给出不喜欢的东西,但不会告诉你如何解决你的问题ehh有人知道如何帮助我吗?
newOrder <- order(as.numeric(str_replace_all(levels(AWD$money), ",","")))
levels(AWD$money) <- levels(AWD$money)[newOrder]