【问题标题】:grouped bar plot with ggplot2 geom_bar is plotting proportions not counts带有 ggplot2 geom_bar 的分组条形图正在绘制比例而不是计数
【发布时间】:2019-09-06 09:16:37
【问题描述】:

我正在尝试绘制一个分组条形图(x,y 由另一个变量),但我得到的是比例图 (0-1) 而不是计数,所有条形图都变为 1。我很困惑因为代码似乎是正确的(使用统计标识和位置闪避)

我尝试过分解变量,但不起作用。数据框是长格式。

ggplot(supra.long, aes(condition, measurement, fill = MODE)) +
  geom_bar(position = 'dodge', stat = "identity") 

当我绘制这小部分数据时得到了相同的结果:

 A tibble: 6 x 3

condition measurement MODE 
  <chr>           <dbl> <chr>

INTACT              1 US   
INTACT              0 US   
INTACT              1 US   
FT                  0 MRI  
FT                  1 MRI  
FT                  0 MRI 

我希望在 y 轴上有一个计数图,但是这些条在比例尺度上都变为 1。

【问题讨论】:

  • 我想绘制 value =1 的计数以进行测量。我尝试转换为 chr,没有变化。
  • 我认为这就是问题所在。它如何计算正值(测量值 = 1)?或者可以。我如何绘制这些数据?我想,创建一个仅包含正值的单独数据集。

标签: r ggplot2 geom-bar


【解决方案1】:

我可能会在绘制数据之前汇总数据并使用“身份”统计信息。

library(dplyr)
condition <- c("INTACT","INTACT","INTACT","FT","FT","FT")
measurement <- c(1,0,1,0,1,0)
MODE <- c("US","US","US","MRI","MRI","MRI")
supra.long <- data.frame(condition, measurement, MODE) %>%
  group_by(condition, MODE) %>%
  summarise(count = sum(measurement))

ggplot(supra.long) +
  geom_bar(aes(x=condition, y=count, fill = MODE), position = 'dodge', stat = "identity") 

或者我会过滤掉零并使用“计数”统计信息。

supra.long <- data.frame(condition, measurement, MODE) %>% filter(measurement > 0)
ggplot(supra.long) +
  geom_bar(aes(x=condition,fill = MODE), position = 'dodge', stat = "count") 

希望对您有所帮助。

【讨论】:

  • 谢谢。似乎更容易过滤并获取需要计算的“是”答案的数据集。然后使用 stat = count
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 2016-11-11
  • 2020-12-25
相关资源
最近更新 更多