我正在制作一个条形图,显示各国不同的猫狗数量 . 猫和狗是存储在不同因子/变量中的水平 . 我想将每个动物计数的条形图绘制在另一个(即2层)之上,然后我想根据每个国家的动物频率从最高(即最高计数)到最低的顺序排序 .
这是我做的:
- 根据每个国家/地区的动物数量排序数据表
plot <- within(plot, country <- factor(country,
levels=names(sort(table(country), decreasing=TRUE))))
- 绘制图表
gg <- ggplot(data = plot, aes(x=country))
- 为狗添加栏
dogs <- gg +
geom_bar(data = plot[plot$animal1 == 'dog',], #select dogs from animal1 variable
stat="count")
如果我这样做,我得到这个(有一个 geom_bar
):
到现在为止还挺好 . 接下来,我为猫添加第二个geom_bar:
dogs_cats <- gg +
geom_bar(data = plot[plot$animal1 == 'dog',], #select dogs from animal1 variable
stat="count") +
geom_bar(data = plot[plot$animal2 == 'cat',], #select cats from animal2 variable
stat="count")
现在订单已更改并且已关闭(在第二个 geom_bar
之后):
如何保持条形的顺序跟随最初的 geom_bar
?
非常感谢!
2 回答
我建议你使用
merge
来创建一个新的数据框:1.Sum up(
ddply
和melt
)您可能有一个包含3列的新数据框:
国家
变量:"dog"或"cat"
值:狗/猫的数量(每个国家)
2.Plot
3.Example:
以下是
diamonds
数据集的示例,没有可重现的示例:Hoom,我确实喜欢你的代码,但是酒吧的顺序并没有改变 . 也许你在某处犯了一个简单的错误 .