使用geom_bar(stat =“ identity”)时对值进行排序

时间:2019-02-15 10:53:09

标签: r ggplot2

问题

我正在使用ggplot2,并且目前遇到以下问题。我有以下数据集,可以复制。

library(tidyverse)
TestDF = data.frame(Effect1 = rnorm(100, 10, 1), Effect2 = rnorm(100, 5, 1)) %>% 
  arrange(Effect1) %>% mutate(IDs = 1:100) %>% 
  melt(measure.vars = 1:2 , variable.name = "Effects") 

由于我希望按照x的值对Effect1进行排序,因此我将arrange(Effect1)放入了数据框。然后我使用以下代码进行绘制:

ggplot(TestDF, aes(IDs, y=value, fill=Effects)) + 
  geom_bar(stat="identity", alpha = .7)

我遇到的问题是:该图具有Effect1值增加的“一般”趋势(如我们从左到右看到的那样),但是从来没有严格按照{{ 1}}。


我尝试过的

我尝试过

Effect1

但是它从来没有解决我的问题。还有其他解决方案(或旁路)吗?

1 个答案:

答案 0 :(得分:1)

看起来像barplot在做您想要的事情,但是Effects的顺序使它看起来不对。 如果Effect1在Effect2之下,则绘图看起来正确。

library(tidyverse)
library(reshape2)

TestDF = data.frame(Effect1 = rnorm(100, 10, 1), Effect2 = rnorm(100, 5, 1)) %>% 
  arrange(Effect1) %>% mutate(IDs = 1:100) %>% 
  melt(measure.vars = 1:2 , variable.name = "Effects")  %>% 
  mutate(Effects = factor(Effects, levels = c('Effect2', 'Effect1')))

ggplot(TestDF, aes(IDs, y=value, fill=Effects)) + 
  geom_bar(stat="identity", alpha = .7)

enter image description here