R ggplot - 如何将这两个直方图组合成一个整体直方图进行比较?

Posted

技术标签:

【中文标题】R ggplot - 如何将这两个直方图组合成一个整体直方图进行比较?【英文标题】:R ggplot - How can I combine these 2 histograms into one overall histogram for comparison? 【发布时间】:2021-09-05 15:38:48 【问题描述】:

所以目前我创建了 2 个单独的 geom_histograms,并希望将它们合并为一个 geom_histogram。基本上蓝色图表与下面的红色图表平行排列,这样我就可以看到每个 x 轴值的某种比较:

#第一个关于科学重要性的直方图

```r
lab_data_science <- filter(lab_data, lab_data$V202310 >=2)

science_importance_hist <- lab_data_science %>% 
    ggplot() +
    aes(x = V202310) +
    geom_histogram(position = 'dodge', bins = 4, fill='blue') + 
    labs(
        title    = 'Importance of Science in Decisions About COVID-19',
        subtitle = '2 = Little Important, 3 = Moderately Important, 4 = Very Important, 5= Extremely Important', 
        x        = 'Importance Scale (2 to 5)',
        y        = 'Count', 
        fill     = 'Republican'
)
science_importance_hist
```

Histogram#1 结果图片如下: C:\Users\Austin Jin\Desktop\pic1.PNG

#关于州长处理 COVID-19 的反对意见的第二个直方图

```r
lab_data_science2 <- filter(lab_data, lab_data$V201147x >= 1)

governor_covid_disapprovals_hist <- lab_data_science %>% 
    ggplot() +
    aes(x = V201147x) +
    geom_histogram(position = 'dodge', bins = 4, fill= 'red') + 
    labs(
        title    = 'Approvals and Disapprovals of Governor Handling COVID-19',
        subtitle = '1 = Approve Strongly, 2 = Approve Not Strongly, 3 = Disapprove Not Strongly, 4= Disapprove Strongly', 
        x        = 'Approval Scale (1 to 4)',
        y        = 'Count', 
        fill     = 'Republican'
  )
governor_covid_disapprovals_hist
```

Histogram#2 结果图片如下: C:\Users\Austin Jin\Desktop\pic2.PNG

任何见解都将不胜感激,因为我一直在努力将两个直方图合并为一个直方图以进行并排比较。在此先感谢您,并确保对提供准确回复的人给予很好的奖励!

【问题讨论】:

我不确定我是否理解所需的结果。 “将两个直方图组合成一个直方图”到底是什么意思。究竟会是什么样子?如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。 是的,就像下图的样子:i.stack.imgur.com/lGuxt.png(基本上能够将 science_importance_hist 的 x 轴值与Governor_covid_disapprovals_hist x 轴值并排放置)跨度> 嗯,这是一张条形图的图片。不是直方图。直方图通常用于连续数据,而条形图用于离散数据。您究竟想如何汇总数据? 几乎我希望将 science_importance_hist 中每个值的总和以及Governor_covid_disapprovals_hist 中每个值的总和放在一个直方图的同一 x 轴上,以便进行并排比较查看两个直方图之间是否存在某种关系 lab_data_science2是如何进入的?您是想将它用于第二个直方图吗? 【参考方案1】:

虽然由于您没有可重复的数据而很难确定,但我认为您想要做的是从tidyr()pivot_long(),我建议您使用geom_col。假设您已经计算了计数,您可以使用 dplyr::summarize() 进行计算。

注意我正在创建示例数据。

covid  <- c(15, 23, 10, 4)
science <- c(12,19, 18, 0)
labels <- c("excellent", "good", "subpar", "decent")
df <-data.frame (labels, covid, science)

df_long <- tidyr::pivot_longer(df, names_to= "Question", values_to = "count", cols = c("science", "covid"))

ggplot(df_long, aes(y = count, x = labels, fill = Question))   + 
             geom_col( position = "dodge2",  width = .5) 

【讨论】:

这对 Elin 有帮助,但是我收到一条消息,参数暗示不同的行数:7265、8218 我相信只要解决了这个行数不同的问题,这个问题就解决了!

以上是关于R ggplot - 如何将这两个直方图组合成一个整体直方图进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

如何将这两个查询组合成一个查询?

R ggplot 直方图。如何根据另一个变量更改条形的颜色?

我无法使用 ggplot 在 r 中填充直方图

【R语言】--- 直方图

r语言中,画出了频率分布直方图,怎么在图上添加概率分布曲线?

在 R 中为这两个直方图添加图例