首页 > 解决方案 > 如何在汇总数据上绘制堆积条形图

问题描述

对于df读取的数据:

car suv pickup
 1   2   1
 2   3   4
 4   1   2
 5   4   2
 3   1   1
total =  apply(df,1,sum)
barplot(total,col= rainbow(5))

所以我现在所做的是在汽车总数上绘制一个条形图,实际上是每一行的总和。我现在要做的是将其呈现为总和上的堆栈条形图。

目前,它只会显示“total”,而没有任何行来指示 1 car、2 suv、1 皮卡是否添加到 4“total”。

笔记。它与 不同barplot(matrix(df)),因为那只是将它划分为我的汽车、SUV、皮卡,而不考虑总数。

标签: r

解决方案


你在追求这样的事情吗?

library(tidyverse)
df %>%
    rowid_to_column("row") %>%
    gather(k, v, -row) %>%
    ggplot(aes(row, v, fill = k)) +
    geom_col()

在此处输入图像描述

我们在这里使用堆叠条形图,因此无需手动计算总和。这里的关键是将数据从宽转换为长并跟踪行。


样本数据

df <- read.table(text =
    "car suv pickup
 1   2   1
 2   3   4
 4   1   2
 5   4   2
 3   1   1", header = T)

推荐阅读