繁体   English   中英

将堆叠条形图从 R 变成 ggplot2

[英]turning stacked bar graph from R into ggplot2

更新使用 R 和 ggplot2 进行数据分析。 试图弄清楚如何将我的数据从 R 转换为 ggplot2 格式。 数据是 5 个不同类别的一组值,我想制作一个堆积条形图,允许我根据值将堆积条形图分成 3 个部分。 前任。 基于任意截止值的小、中和大值。 类似于 excel 中的 100% 堆叠条形图,其中所有值的比例加起来为 1(在 y 轴上)。 如果这也是需要注意的有价值的事情,那么有相当多的数据(约 1500 个观察值)。

这是数据的示例(但每列大约有 1000 个观察值)(我放了一个 excel 屏幕截图,因为我不知道下面是否有效)

dput(sample-data)

与此图像类似,但比例特定于任意数据截止值,其中只有 3 个

这类问题通常是数据重组问题。 请参阅将 data.frame 从宽格式重塑为长格式
以下代码使用内置数据集iris ,具有 4 个数字列,plot 是一个条形图,其中数据值在重塑数据后被切割成多个级别。

我选择了截止点0.20.7 ,但(0, 1)中的任何其他数字都可以。 截止向量是brks和级别名称labls

library(tidyverse)

data(iris)

brks <- c(0, 0.2, 0.7, 1)
labls <- c('Small', 'Medium', 'Large')

iris[-5] %>%
  pivot_longer(
    cols = everything(),
    names_to = 'Category',
    values_to = 'Value'
  ) %>%
  group_by(Category) %>%
  mutate(Value = (Value - min(Value))/diff(range(Value)),
         Level = cut(Value, breaks = brks, labels = labls, 
                     include.lowest = TRUE, ordered_result = TRUE)) %>%
  ggplot(aes(Category, fill = Level)) +
  geom_bar(stat = 'count', position = position_fill()) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

在此处输入图像描述

这是一个不需要重新格式化数据的解决方案。

diamonds数据集附带ggplot2 “颜色”列是分类,“价格”列是数字:

library(ggplot)

ggplot(diamonds) + 
    geom_bar(aes(x = color, fill = cut(price, 3, labels = c("low", "mid", "high"))),
             position = "fill") +
    labs(fill = "price")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM