R 使几何图形栏按升序显示值
虽然我的查询按降序显示值,但ggplot会按字母顺序而不是升序显示它们 这个问题的已知解决方案似乎不起作用。他们建议对值使用重新排序或因子,这在本例中不起作用 这是我的代码:R 使几何图形栏按升序显示值,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,虽然我的查询按降序显示值,但ggplot会按字母顺序而不是升序显示它们 这个问题的已知解决方案似乎不起作用。他们建议对值使用重新排序或因子,这在本例中不起作用 这是我的代码: boxoffice %>% group_by(studio) %>% summarise(movies_made = n()) %>% arrange(desc(movies_made)) %>% top_n(10) %>% arrange(desc(movies_made
boxoffice %>%
group_by(studio) %>%
summarise(movies_made = n()) %>%
arrange(desc(movies_made)) %>%
top_n(10) %>%
arrange(desc(movies_made)) %>%
ggplot(aes(x = studio, y = movies_made, fill = studio, label = as.character(movies_made))) +
geom_bar(stat = 'identity') +
geom_label(label.size = 1, size = 5, color = "white") +
theme(legend.position = "none") +
ylab("Movies Made") +
xlab("Studio")
您需要将boxoffice$studio转换为有序因子。然后,ggplot将遵循数据集中的行顺序,而不是按字母顺序排列。您的dplyr链将如下所示:
boxoffice %>%
group_by(studio) %>%
summarise(movies_made = n()) %>%
arrange(desc(movies_made)) %>%
ungroup() %>% # ungroup
mutate(studio = factor(studio, studio, ordered = T)) %>% # convert variable
top_n(10) %>%
arrange(desc(movies_made)) %>%
ggplot(aes(x = studio, y... (rest of plotting code)
对于那些想要一个更完整的例子的人,这里是我得到的:
library(dplyr)
library(ggplot2)
# get some dummy data
boxoffice = boxoffice::boxoffice(dates=as.Date("2017-1-1"))
df <- (
boxoffice %>%
group_by(distributor) %>%
summarise(movies_made = n()) %>%
mutate(studio=reorder(distributor, -movies_made)) %>%
top_n(10))
ggplot(df, aes(x=distributor, y=movies_made)) + geom_col()
可能是@markus的副本该解决方案无效您尝试过重新排序吗?@markus,是的。使用不同的语法。我得到:tapplyX=X中的错误,INDEX=X,FUN=FUN,…然后请使您的问题重现。在问题的末尾加上dputheadboxoffice的输出,20。你基本上就搞定了。我得到了我想要的。现在它是按降序排列的,但是如果我想让它升序,我该怎么做呢?我去掉了desc,它改变了数据帧的顺序,但绘图保持不变。实际上,代码有两次desc:在新的解组行之前,然后在top\n之后。尝试删除这两个。你是一个向导!