我不确定如何创建一个堆叠条形图,在 R 中显示按月分解的变量的出现

问题描述

我的数据集,例如sharks,包含一个物种名称的变量,归类为一个因子,以及一个变量month,也归类为一个因子。我想要做的是为每个月创建一个单独的条形图,以显示该月捕获的每个物种的数量。或者,使用单个堆叠条形图显示所有 12 个月。我已经开始了 ggplot 代码,但是,我不知道使用什么作为 y 变量,因为这应该是每个物种的计数。

ggplot(sharks,aes(fill = Species.Name,y = count,x = Month)) + 
    geom_bar(position = "fill",stat = "identity")

数据集样本:

Species Name,Date,Area,Location,Latitude,Longitude,Length (m),Water Temp (C),Month,Day of Week
BLACKTIP REEF WHALER,2016-07-27,Townsville,Radical Bay,-19°6.51,146°52.63,1.1,24,July,Wednesday
BLACKTIP REEF WHALER,2016-07-29,The Strand,-19°14.44,146°48.77,1.13,23,Friday
BLACKTIP REEF WHALER,2016-09-24,Florence Bay,-19°7.3,146°53.12,1.25,27,September,Saturday
BLACKTIP REEF WHALER,2016-10-19,Cairns,Holloways Beach,-16°49.82,145°44.85,0.85,26,October,2016-10-21,Mackay,Harbour Beach,-21°7.08,149°13.62,1.8,25,2016-12-17,Gladstone,Tannum Sands,-23°56.91,151°22.9,0.9,December,Saturday
BULL WHALER,2016-01-02,Gold Coast,Tallebudgera Beach,-28°5.47,153°28.26,2.5,January,2016-01-06,Capricorn Coast,Lammermoor Beach,-23°9.16,150°46.2,0.98,Wednesday
BULL WHALER,2016-01-07,Bucasia Beach,-21°1.46,149°9.97,2.2,Thursday
BULL WHALER,2016-01-10,Eimeo Beach,-21°1.8,149°10.8,2,Sunday
BULL WHALER,2016-01-12,Rainbow Beach,-25°53.92,153°5.87,2.85,Tuesday
BULL WHALER,2016-01-21,Yeppoon,-23°7.58,150°45.28,0.83,2016-01-30,Emu Park,-23°15.66,150°49.92,1.14,28,Saturday

完整的数据集包含大约 24 种鲨鱼,所以我认为带有图例的堆叠条形图是最好的选择,因为我怀疑这些名称不会都适合典型的条形图。

解决方法

您可以使用 count 查找每个月的 Species 数量。试试 -

library(dplyr)
library(ggplot2)

sharks %>%
  count(Species.Name,Month = factor(Month,month.name)) %>%
  ggplot(aes(fill = Species.Name,y = n,x = Month)) + 
  geom_col()