我正在尝试在 ggplot2 中使用 scales = free_x
的 facet-wrapped 绘图中使用 reorder
,但是 reorder 函数没有正确地重新排序 x 轴。这是我的代码:
library(ggplot2)
df <- read.table("speaking_distribution_by_play.txt",
header = F,
sep = "\t")
ggplot(df, aes(x=reorder(V2, V3), y=V3)) +
geom_bar(stat = "identity") +
facet_wrap(~V1, ncol = 4, scales = "free_x") +
opts(title = "Distribution of Speakers in Shakespearean Drama") +
xlab("Speaking Role") +
ylab("Words Spoken") +
opts(axis.text.x=theme_text(angle=90, hjust=1))
从这个以制表符分隔的文件读取数据框并运行代码,可以得到一个图形,其中每个分面图的x轴仅部分排序。 SO上的其他人提出了一个非常类似的问题,但唯一的解决方案是使用网格排列。 由于我的数据集比那个问题中的数据集大得多,因此这不会是一个非常快速的操作,所以我想问:有没有办法重新排序每个分面图的x轴,以按大小递增(或递减)顺序显示条形图? 我将非常感谢其他人对这个问题提供的任何帮助。
opts
自 2012 年以来已被弃用。我认为现在是时候更新你的ggplot2
包了。你的第一个带有标题的opts()
可以被替换为labs()
(并且你的xlab
和ylab
可以放在里面),而你的第二个opts
将被替换为theme()
。 - Gregor Thomasgrid.arrange
是最好的选择。 - Gregor Thomas