我正在制作一张图表,显示一个物种在两个不同地点的三个生命阶段.

我想创建一组图表,显示不同地区的不同生命阶段.

到目前为止,我可以使用patchwork来完成这项工作,但是由于我的列太小,所以几乎无法读取.

我也try 过在ggplot年内完全做到这一点,但到目前为止,我还不能同时有两个独立的生命阶段和地点.

我的数据来self 自己的实地工作.

使用的其他程序包包括: library(tidyverse)library(dplyr) 一百零二 library(scales)

我如何使用我的数据:

lifestages <- read.csv("Lifestages_ny.csv", 
                       sep=";", header = T, 
                       stringsAsFactors=FALSE)

#dates to actual dates!
lifestages$Dato <- as.Date(lifestages$Dato)

#selecting a subset of your data:
spidersubset <- subset(lifestages, select = c(Dato, Place, total_tiny, total_medium, total_large))

data_long <- pivot_longer(data=spidersubset, cols=c("total_tiny", "total_medium", "total_large"), names_to = "Llifestages", values_to = "Count")

以下是我的数据的一个子集:

 Nr       Dato        Place spider_count total_tiny total_medium total_large
1    1 2021-09-15 Nedre Leberg            1          0            1           0
2    2 2021-09-15 Nedre Leberg            4          0            0           4
3    3 2021-09-15 Nedre Leberg            1          0            0           1
4    4 2021-09-15 Nedre Leberg            2          0            0           2
5    5 2021-09-15 Nedre Leberg            2          0            0           2
6    6 2021-09-15 Nedre Leberg            7          0            0           7
7    7 2021-09-15 Nedre Leberg            2          0            0           2
8    8 2021-09-15 Nedre Leberg            3          0            0           3
10  10 2021-09-15 Nedre Leberg            1          0            1           0
11  11 2021-09-15 Nedre Leberg            1          0            0           1
12  12 2021-09-15 Nedre Leberg            1          0            0           1
13  13 2021-09-15 Nedre Leberg            1          0            0           1
14  14 2021-09-15 Nedre Leberg            5          0            0           5
15  15 2021-09-15 Nedre Leberg            1          0            0           1
16  16 2021-09-15 Nedre Leberg            1          0            0           2
18   1 2022-04-23 Nedre Leberg            1          0            0           1
19   2 2022-04-23 Nedre Leberg            1          0            0           1
20   3 2022-04-23 Nedre Leberg            1          0            1           0
21   4 2022-04-23 Nedre Leberg            2          0            0           2
22   5 2022-04-23 Nedre Leberg            5          0            4           1
23   6 2022-04-23 Nedre Leberg            2          0            2           0
24   7 2022-04-23 Nedre Leberg            1          0            0           1
25   8 2022-04-23 Nedre Leberg            1          0            0           1
26   9 2022-04-23 Nedre Leberg            1          0            0           1
27  10 2022-04-23 Nedre Leberg            1          0            0           1
28  11 2022-04-23 Nedre Leberg            1          0            1           0
29  12 2022-04-23 Nedre Leberg            3          0            2           0
30  13 2022-04-23 Nedre Leberg            8          0            2           6
31  14 2022-04-23 Nedre Leberg            4          0            2           2
32  15 2022-04-23 Nedre Leberg            2          0            0           2
33  16 2022-04-23 Nedre Leberg            6          0            2           4
34   1 2022-05-18 Nedre Leberg            1          0            0           1
35   2 2022-05-18 Nedre Leberg            1          0            0           1
36   3 2022-05-18 Nedre Leberg            1          0            0           1
37   4 2022-05-18 Nedre Leberg            4          0            1           3
38   5 2022-05-18 Nedre Leberg            1          0            0           1
39   6 2022-05-18 Nedre Leberg            1          0            0           1
40   7 2022-05-18 Nedre Leberg            1          0            0           1
41   8 2022-05-18 Nedre Leberg            1          0            0           1
42   9 2022-05-18 Nedre Leberg            1          0            1           0
43  10 2022-05-18 Nedre Leberg            1          0            0           1
44  11 2022-05-18 Nedre Leberg            4          0            1           3
45  12 2022-05-18 Nedre Leberg            3          0            1           2
46  13 2022-05-18 Nedre Leberg            4          0            0           4
47  14 2022-05-18 Nedre Leberg            1          0            0           1
48  15 2022-05-18 Nedre Leberg            2          0            0           2
49  16 2022-05-18 Nedre Leberg            2          0            1           1
50  17 2022-05-18 Nedre Leberg            1          0            0           1
51   1 2022-06-07   Rinnleiret            2          0            0           1
52   2 2022-06-07   Rinnleiret            4          0            0           4
53   1 2022-06-09 Nedre Leberg            0          0            0           0
54   1 2022-06-10   Rinnleiret            1          0            0           1
55   2 2022-06-10   Rinnleiret            1          0            1           0
56   3 2022-06-10   Rinnleiret            1          0            0           1
57   4 2022-06-10   Rinnleiret            1          0            1           0
58   5 2022-06-10   Rinnleiret            1          0            0           1
59   6 2022-06-10   Rinnleiret            1          0            0           1
60   1 2022-06-23 Nedre Leberg            1          0            1           0
61   2 2022-06-23 Nedre Leberg            2          0            0           1
62   1 2022-07-04 Nedre Leberg            1          1            0           0
63   2 2022-07-04 Nedre Leberg            1          1            0           0
64   3 2022-07-04 Nedre Leberg            1          1            0           0
65   4 2022-07-04 Nedre Leberg            1          0            1           0
66   5 2022-07-04 Nedre Leberg            1          0            1           0
67   6 2022-07-04 Nedre Leberg            1          1            0           0
68   1 2022-07-12   Rinnleiret            1          0            1           0
69   2 2022-07-12   Rinnleiret            1          0            1           0
70   3 2022-07-12   Rinnleiret            1          0            1           0
71   4 2022-07-12   Rinnleiret            1          0            0           1
72   5 2022-07-12   Rinnleiret            1          0            0           1
73   6 2022-07-12   Rinnleiret            1          0            0           1
74   7 2022-07-12   Rinnleiret            4          0            1           3
75   8 2022-07-12   Rinnleiret            6          1            5           0
76   9 2022-07-12   Rinnleiret            1          0            0           1
77  10 2022-07-12   Rinnleiret            1          0            0           1
78  11 2022-07-12   Rinnleiret            1          0            0           1
79  12 2022-07-12   Rinnleiret            1          0            0           1
80  13 2022-07-12   Rinnleiret            2          0            2           0
81  14 2022-07-12   Rinnleiret            3          1            2           0
82  15 2022-07-12   Rinnleiret            3          1            2           0
83   1 2022-07-29 Nedre Leberg            1          1            0           0
84   2 2022-07-29 Nedre Leberg            1          1            0           0
85   1 2022-08-02   Rinnleiret            1          0            1           0
86   2 2022-08-02   Rinnleiret            1          0            1           0
87   3 2022-08-02   Rinnleiret            1          0            0           1
89   5 2022-08-02   Rinnleiret            1          0            1           0
90   6 2022-08-02   Rinnleiret            1          1            0           0
91   7 2022-08-02   Rinnleiret            1          0            0           1
92   8 2022-08-02   Rinnleiret            1          0            1           0
93   9 2022-08-02   Rinnleiret            1          0            0           1
94  10 2022-08-02   Rinnleiret            1          0            0           1
95  11 2022-08-02   Rinnleiret            3          1            2           0
96  12 2022-08-02   Rinnleiret            2          0            2           0
97  13 2022-08-02   Rinnleiret            4          2            2           0
98  14 2022-08-02   Rinnleiret            3          0            3           0
99  15 2022-08-02   Rinnleiret            4          0            2           2
100 16 2022-08-02   Rinnleiret            3          0            3           0
101 17 2022-08-02   Rinnleiret            1          0            0           1
102 18 2022-08-02   Rinnleiret            4          0            2           2
103 19 2022-08-02   Rinnleiret            4          0            2           2
104 20 2022-08-02   Rinnleiret            1          0            0           1
105 21 2022-08-02   Rinnleiret            2          0            2           0
106 22 2022-08-02   Rinnleiret            2          0            2           0
107 23 2022-08-02   Rinnleiret            1          0            0           1
108 24 2022-08-02   Rinnleiret            1          0            0           1
109 25 2022-08-02   Rinnleiret            2          0            2           0
110  1 2022-08-15   Rinnleiret            1          1            0           0
111  2 2022-08-15   Rinnleiret            1          0            1           0
112  3 2022-08-15   Rinnleiret            1          1            0           0
113  4 2022-08-15   Rinnleiret            1          0            1           0
114  5 2022-08-15   Rinnleiret            3          2            1           0
115  6 2022-08-15   Rinnleiret            1          0            0           1
116  7 2022-08-15   Rinnleiret            2          0            1           1
117  8 2022-08-15   Rinnleiret            4          0            0           4
118  9 2022-08-15   Rinnleiret            1          0            0           1
119 10 2022-08-15   Rinnleiret            1          0            0           1
120 11 2022-08-15   Rinnleiret            1          0            0           1
121 12 2022-08-15   Rinnleiret            1          0            0           1
122 13 2022-08-15   Rinnleiret            3          0            0           1
123 14 2022-08-15   Rinnleiret            2          0            0           2
124 15 2022-08-15   Rinnleiret            4          1            3           0
125 16 2022-08-15   Rinnleiret            1          0            1           0
126 17 2022-08-15   Rinnleiret            3          0            3           0
127 18 2022-08-15   Rinnleiret            2          0            1           1
128 19 2022-08-15   Rinnleiret            3          1            1           1
129 20 2022-08-15   Rinnleiret            1          0            0           1
130 21 2022-08-15   Rinnleiret            3          1            2           0
131 22 2022-08-15   Rinnleiret            2          0            1           1
132 23 2022-08-15   Rinnleiret            4          1            3           0
133 24 2022-08-15   Rinnleiret            6          2            3           1
134 25 2022-08-15   Rinnleiret            2          0            0           2
135 26 2022-08-15   Rinnleiret           13         10            0           4
136 27 2022-08-15   Rinnleiret            2          0            0           2
137 28 2022-08-15   Rinnleiret            1          0            0           1
138 29 2022-08-15   Rinnleiret            1          0            1           0
139 30 2022-08-15   Rinnleiret            2          0            1           1
140 31 2022-08-15   Rinnleiret            5          0            2           3
141 32 2022-08-15   Rinnleiret            5          0            2           3
142 33 2022-08-15   Rinnleiret            2          0            0           2
143 34 2022-08-15   Rinnleiret            3          0            1           2
148  5 2022-08-18 Nedre Leberg            1          1            0           0
150  7 2022-08-18 Nedre Leberg            1          0            0           1

如果我只try 使用gglot,我要么只能得到不同的生活方式,要么得到不同的地点.

ggplot graph showing lifestages in separate graphs

这就是我想要实现的那种外观,但除此之外,我还想把各个地方分开.当我try 使用patchwork来执行此操作时,图形变得太杂乱且难以阅读.

我的ggploy代码是什么样子的:

#using patchwork in stead?
small <- ggplot(lifestages, aes(x = Dato, y = total_tiny))+
  labs(title = "Spider life stages",
       x = "Date", y = "Amount small spiders")+
  guides(x =  guide_axis(angle = 90)) +
  facet_wrap(~ Place, ncol = 2)+
  scale_x_date(breaks=date_breaks("1 month"), labels=date_format("%Y-%m-%d"))+
  theme_bw()+
  geom_bar(stat = "identity", position = "dodge", width = 15, fill="lightgray")
small

medium <- ggplot(lifestages, aes(x = Dato, y = total_medium))+
  labs(title = "Spider life stages",
       x = "Date", y = "Amount medium spiders")+
  guides(x =  guide_axis(angle = 90)) +
  facet_wrap(~ Place, ncol = 2)+
  scale_x_date(breaks=date_breaks("1 month"), labels=date_format("%Y-%m-%d"))+
  theme_bw()+
  geom_bar(stat = "identity", position = "dodge", width = 15, fill="darkgray")
medium

large <- ggplot(lifestages, aes(x = Dato, y = total_large))+
  labs(title = "Spider life stages",
       x = "Date", y = "Amount large spiders")+
  guides(x =  guide_axis(angle = 90)) +
  facet_wrap(~ Place, ncol = 2)+
  scale_x_date(breaks=date_breaks("1 month"), labels=date_format("%Y-%m-%d"))+
  theme_bw()+
  geom_bar(stat = "identity", position = "dodge", width = 15, fill="black")
large
large/medium/small

patchwork plot

有没有人有什么建议来改善我的图表?

如有任何帮助,不胜感激!

推荐答案

您应该使用已经创建的data_long数据框,并使用facet_grid来布局面板.这样,您的地块就可以共享轴线并节省空间.所以:

combined <- ggplot(data_long, aes(x = Dato, y = Count))+
  labs(title = "Spider life stages",
       x = "Date", y = "Amount small spiders")+
  guides(x =  guide_axis(angle = 90)) +
  facet_grid(Llifestages ~ Place)+
  scale_x_date(breaks=date_breaks("1 month"), labels=date_format("%Y-%m-%d"))+
  theme_bw()+
  geom_bar(stat = "identity", position = "dodge", width = 15, fill="lightgray")
combined

enter image description here

R相关问答推荐

如何按行和列组合多个格式?

创建计数(带重置)变量

从载体创建 pyramid

如何从其他前面列中减go 特定列的平均值?

编辑文件后编辑RhandsonTable

根据模式将一列拆分为多列,并在R中进行拆分

在数学中正确显示摄氏度、开氏度或华氏度

使用strsplit()将向量操作为数据框

如果某些列全部为NA,则更改列

将文件保存到新文件夹时,切换r设置以不必创建目录

使用R闪光显示所有数据点作为默认设置

提取一个列表中单个列的重复观察结果R

在ggplot2的框图中绘制所有级别的系数

汇总数据帧中的复制列,保持行的唯一性

为什么在写入CSV文件时Purrr::Pwalk不起作用

循环遍历多个变量,并将每个变量插入函数R

为R中的16组参数生成10000个样本的有效方法是什么?

是否有可能从边界中找到一个点值?

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

当由base::限定时,`[.factor`引发NextMethod错误