如何从 R 中的两个数值变量创建堆叠直方图?

How to create stacked histogram from two numeric variables in R?

我是第一次使用 R,遇到了一个无法解决的问题。

我测量了学生的"working time"和"study time"。它们共同导致了学生的 "workload"。我想创建一个直方图来描述工作量并区分工作时间和学习时间的颜色。

就像堆叠条形图,但作为直方图,没有任何分类变量。

我在互联网上搜索了很长时间,但只找到了堆叠条形图、重叠直方图或密度图。

我们将非常感谢您的帮助

编辑:我的数据看起来像

    VP     Work   Study     Workload
     1     10     20        30
     2     30     20        50
     3     20     40        60
     ...   ...    ...

因此直方图的条形应该具有 30、50 和 60 的高度,并且 "work" 和 "study" 的颜色成比例。

根据您的编辑,我假设您希望每个学生的总时数有一个栏。是这样的吗?

我正在使用 ggplot2tidyverse 包中的功能。

library(dplyr)
library(tidyr)
library(ggplot2)

df <- tibble(VP = 1:3,
             Work = c(10, 30, 20),
             Study = c(20, 20, 40),
             Workload = c(30, 50, 60)) # Or simply `Workload = Work + Study`

df %>% 
  select(-Workload) %>% 
  tidyr::gather(-VP, key = "type", value = "time") %>% 
  ggplot(aes(x = factor(VP), y = time, fill = type)) +
    geom_col(position = "stack") # `position` argument defines the stacked bars