簡體   English   中英

使用 R 中的 ggplot2 按列值對 plot 中的條形圖進行分組

[英]Grouping bars in a plot by column value using ggplot2 in R

我沿樣線計算了無脊椎動物的數據。 數據包括 3 列——一列是收集數據的日期,一列是橫斷面識別號,一列是觀察到的物種。

structure(list(Date = c("8/22/2022", "8/22/2022", "8/23/2022", 
"8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", 
"8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", 
"8/23/2022", "8/23/2022", "8/18/2022", "8/18/2022", "8/18/2022", 
"8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", 
"8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", 
"8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", 
"8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", "8/23/2022", 
"8/23/2022", "8/23/2022", "8/22/2022", "8/22/2022", "8/22/2022", 
"8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", 
"8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", 
"8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", 
"8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", "8/22/2022", 
"8/22/2022", "8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", 
"8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", "8/18/2022", 
"8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", 
"8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", 
"8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", 
"8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", "8/16/2022", 
"8/16/2022", "8/16/2022", "8/16/2022"), Transect = c(8L, 8L, 
4L, 4L, 5L, 5L, 5L, 6L, 6L, 7L, 8L, 8L, 9L, 9L, 9L, 4L, 4L, 4L, 
5L, 5L, 6L, 6L, 7L, 8L, 8L, 9L, 9L, 9L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 9L, 9L, 9L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
4L, 4L, 4L, 5L, 6L, 7L, 7L, 7L, 8L, 8L, 8L, 9L, 9L, 9L), Species = c("RCRAB", 
"DOL", "DOL", "STAR", "DOL", "RCRAB", "STAR", "DOL", "LOB", "DOL", 
"DOL", "RCRAB", "DOL", "LOB", "STAR", "DOL", "LOB", "STAR", "DOL", 
"RCRAB", "DOL", "RCRAB", "DOL", "DOL", "RCRAB", "DOL", "STAR", 
"RCRAB", "DOL", "STAR", "RCRAB", "URCH", "DOL", "RCRAB", "URCH", 
"STAR", "DOL", "LOB", "STAR", "URCH", "DOL", "RCRAB", "STAR", 
"URCH", "STAR", "DOL", "URCH", "RCRAB", "DOL", "STAR", "URCH", 
"RCRAB", "DOL", "STAR", "DOL", "LOB", "DOL", "RCRAB", "DOL", 
"RCRAB", "DOL", "DOL", "STAR", "URCH", "DOL", "STAR", "RCRAB", 
"LOB", "DOL", "STAR", "RCRAB", "DOL", "LOB", "DOL", "STAR", "LOB", 
"DOL", "STAR", "URCH", "DOL", "STAR", "RCRAB", "DOL", "LOB", 
"STAR", "DOL", "DOL", "DOL", "RCRAB", "STAR", "STAR", "DOL", 
"RCRAB", "DOL", "STAR", "RCRAB")), class = "data.frame", row.names = c(NA, 
-96L))

我想創建一個多圖,其中每個日期都有一個單獨的 plot,X 值是樣帶編號,Y 值是在該樣帶上發現的物種數量。 到目前為止,我有這個:

library(ggplot2)
invertplot <- ggplot(data=invert, aes(Transect, Species)) +
  geom_bar(stat='identity') +
  labs(title="Number of Invertebrate Species per Transect Steering Rocks August 2022",
       y="Number of Species",
       x="Transect Number") +
  facet_wrap(~Date)
invertplot

這給了我一個 plot ,其中每個物種都列在 Y 軸上,X 軸是整個數據集中該物種的數量。 在此處輸入圖像描述

如何讓 ggplot 按樣帶編號而不是物種對值進行分組? 提前致謝!

如果您想要一個僅計算觀察值的條形 plot,請不要使用stat = "identity" geom_bar的默認行為是使用stat_count 所以我認為你只需要:

library(tidyverse)

ggplot(data = invert, aes(factor(Transect))) +
  geom_bar() +
  labs(title = paste0("Number of Invertebrate Species per Transect ",
                      "Steering Rocks August 2022"),
       y = "Number of Species",
       x = "Transect Number") +
  facet_wrap( ~ Date)

在此處輸入圖像描述

如果在同一日期同一樣帶上有多個同一物種的記錄,您只想計算一次,您會更安全:

ggplot(data = invert %>% count(Transect, Species, Date), aes(factor(Transect))) +
  geom_bar() +
  labs(title = paste0("Number of Invertebrate Species per Transect ",
                      "Steering Rocks August 2022"),
       y = "Number of Species",
       x = "Transect Number") +
  facet_wrap( ~ Date)

但這為您當前的示例數據提供了相同的 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM