[英]How do I add an additional x and y axis to geom_col?
我目前正在嘗試將 O2 配置文件添加到我在 ggplot 中制作的深度分布中。 我不能使用 sec.axis 因為附加軸不是原始軸的轉換。 我想我需要在不使用 ggplot 的情況下重新繪制整個事情,但我什至不確定從哪里開始。 這是我基本上想要做的事情的鏈接。 我有按深度划分的魚分布,但只需要添加氧氣。 需要明確的是,氧氣將通過增加深度來繪制,因此最低深度即。 0、10 等將在頂部,然后向 1500 m 增加。
有誰知道如何做到這一點?
這是我迄今為止能夠創建的內容。 哦也是次要問題! 有誰知道如何去除負數並讓它們在 x 軸上都是正數?
如果有什么我需要澄清的,請告訴我!
這是我的代碼:
Fish$Depth <- factor(Fish$Depth, levels = c("1500-1000", "1000-700", "700-450", "450-70", "70-0"))
fishplot<- ggplot (Fish, aes(x=Depth)) +
geom_col(data = subset(Fish, DayNight == "Night"),
aes(y = Abundance, fill = 'Night')) +
geom_col(data = subset(Fish, DayNight == "Day"),
aes(y = -Abundance, fill = 'Day')) + coord_flip() +
scale_y_continuous(
position = "right",
expand = c(0,0)) +
theme(panel.spacing.x = unit(0, "mm")) +
ggtitle("Fish Abundance by Depth")
fishplot
這是示例魚數據:
ï..Filler DayNight BroadClassification Abundance Depth
1 0 Day Fish 0.7110791 1500-1000
2 0 Day Fish 2.0440120 1000-700
3 0 Day Fish 3.4934186 700-450
4 0 Day Fish 3.5640043 450-70
5 0 Day Fish 1.4005127 70-0
6 0 Night Fish 0.7962357 1500-1000
7 0 Night Fish 1.0298787 1000-700
8 0 Night Fish 0.6769755 700-450
9 0 Night Fish 1.6351438 450-70
10 0 Night Fish 1.9773601 70-0
以下是 O2 的示例數據:
ï..Filler Depth..m Averaged.O2
1 NA 1 196.96
2 NA 2 197.18
3 NA 3 197.40
4 NA 4 197.11
5 NA 5 179.88
6 NA 6 199.32
7 NA 7 197.98
8 NA 8 197.47
9 NA 9 198.11
10 NA 10 198.13
11 NA 11 197.83
12 NA 12 197.73
13 NA 13 198.14
14 NA 14 197.68
15 NA 15 197.90
16 NA 16 197.92
17 NA 17 197.77
18 NA 18 197.13
19 NA 19 197.85
20 NA 20 198.09
21 NA 21 197.95
22 NA 22 198.04
23 NA 23 197.74
24 NA 24 198.09
25 NA 25 198.22
26 NA 26 197.86
27 NA 27 198.27
28 NA 28 197.39
29 NA 29 197.48
30 NA 30 197.76
31 NA 31 197.67
32 NA 32 197.90
33 NA 33 197.32
34 NA 34 197.71
35 NA 35 198.01
36 NA 36 197.86
37 NA 37 196.12
38 NA 38 197.04
39 NA 39 197.35
40 NA 40 197.25
41 NA 41 197.05
42 NA 42 196.80
43 NA 43 196.70
44 NA 44 196.63
45 NA 45 196.92
46 NA 46 196.35
47 NA 47 196.44
48 NA 48 196.35
49 NA 49 195.89
50 NA 50 196.43
51 NA 51 195.04
52 NA 52 193.80
53 NA 53 193.41
54 NA 54 192.62
55 NA 55 177.26
56 NA 56 159.58
57 NA 57 154.47
58 NA 58 147.79
59 NA 59 142.82
60 NA 60 119.95
61 NA 61 115.37
62 NA 62 108.85
63 NA 63 106.38
64 NA 64 102.76
65 NA 65 101.86
66 NA 66 120.54
67 NA 67 118.69
68 NA 68 123.03
69 NA 69 122.49
70 NA 70 120.24
71 NA 71 119.08
72 NA 72 115.89
73 NA 73 121.55
74 NA 74 128.44
75 NA 75 129.37
76 NA 76 143.52
77 NA 77 155.50
78 NA 78 153.60
79 NA 79 152.40
80 NA 80 151.47
81 NA 81 146.24
82 NA 82 143.68
83 NA 83 138.98
84 NA 84 135.64
85 NA 85 133.21
86 NA 86 129.18
87 NA 87 125.53
88 NA 88 122.60
89 NA 89 114.99
90 NA 90 111.34
91 NA 91 107.11
92 NA 92 101.72
93 NA 93 99.26
94 NA 94 95.45
95 NA 95 86.06
96 NA 96 72.42
97 NA 97 56.60
98 NA 98 56.68
99 NA 99 51.93
100 NA 100 44.25
101 NA 101 40.03
102 NA 102 35.38
103 NA 103 30.81
104 NA 104 24.92
105 NA 105 23.59
106 NA 106 21.78
107 NA 107 20.36
108 NA 108 19.21
109 NA 109 18.82
110 NA 110 18.17
111 NA 111 17.35
112 NA 112 17.06
113 NA 113 17.32
114 NA 114 17.66
115 NA 115 17.73
116 NA 116 17.68
117 NA 117 17.60
118 NA 118 17.87
119 NA 119 17.93
120 NA 120 18.10
121 NA 121 18.33
122 NA 122 18.40
123 NA 123 18.34
124 NA 124 18.55
125 NA 125 18.83
126 NA 126 18.89
127 NA 127 19.91
128 NA 128 20.06
129 NA 129 20.94
130 NA 130 21.50
131 NA 131 22.20
132 NA 132 22.71
133 NA 133 24.79
134 NA 134 24.99
135 NA 135 25.29
136 NA 136 25.25
137 NA 137 25.39
138 NA 138 26.16
139 NA 139 26.67
140 NA 140 29.67
141 NA 141 30.29
142 NA 142 30.55
143 NA 143 31.19
144 NA 144 31.96
145 NA 145 32.51
146 NA 146 32.69
147 NA 147 33.45
148 NA 148 34.60
149 NA 149 34.57
150 NA 150 33.48
151 NA 151 32.14
152 NA 152 31.33
153 NA 153 31.20
154 NA 154 31.30
155 NA 155 31.48
156 NA 156 31.57
157 NA 157 31.70
158 NA 158 31.46
159 NA 159 31.45
160 NA 160 31.70
161 NA 161 32.33
162 NA 162 33.15
163 NA 163 33.28
164 NA 164 33.36
165 NA 165 32.61
166 NA 166 30.63
167 NA 167 31.31
168 NA 168 31.57
169 NA 169 33.29
170 NA 170 33.06
171 NA 171 31.96
172 NA 172 29.03
173 NA 173 29.17
174 NA 174 29.14
175 NA 175 29.58
176 NA 176 28.90
177 NA 177 27.91
178 NA 178 27.86
179 NA 179 27.71
180 NA 180 28.02
181 NA 181 29.09
182 NA 182 29.63
183 NA 183 30.15
184 NA 184 30.55
185 NA 185 41.53
186 NA 186 30.03
187 NA 187 29.96
188 NA 188 29.61
189 NA 189 29.46
190 NA 190 29.71
191 NA 191 29.74
192 NA 192 28.76
193 NA 193 27.79
194 NA 194 25.87
195 NA 195 24.59
196 NA 196 24.49
197 NA 197 25.00
198 NA 198 26.43
199 NA 199 26.36
200 NA 200 26.46
201 NA 201 26.45
202 NA 202 26.59
203 NA 203 26.60
204 NA 204 27.21
205 NA 205 27.51
206 NA 206 27.95
207 NA 207 28.18
208 NA 208 28.45
209 NA 209 27.88
210 NA 210 26.33
211 NA 211 21.72
212 NA 212 21.52
213 NA 213 22.78
214 NA 214 22.64
215 NA 215 21.80
216 NA 216 21.22
217 NA 217 20.95
218 NA 218 20.62
219 NA 219 20.52
220 NA 220 20.56
221 NA 221 20.39
222 NA 222 19.05
223 NA 223 19.63
224 NA 224 19.69
225 NA 225 19.81
226 NA 226 18.94
227 NA 227 18.81
228 NA 228 19.01
229 NA 229 19.26
230 NA 230 19.34
231 NA 231 19.46
232 NA 232 19.47
233 NA 233 19.54
234 NA 234 19.74
235 NA 235 20.11
236 NA 236 20.63
237 NA 237 21.01
238 NA 238 21.16
239 NA 239 21.68
240 NA 240 22.20
241 NA 241 22.38
242 NA 242 22.51
243 NA 243 22.82
244 NA 244 23.24
245 NA 245 23.14
246 NA 246 23.24
247 NA 247 23.36
248 NA 248 23.41
249 NA 249 23.13
250 NA 250 22.99
251 NA 251 22.66
252 NA 252 21.64
253 NA 253 20.91
254 NA 254 21.08
255 NA 255 21.19
256 NA 256 21.49
257 NA 257 21.57
258 NA 258 21.30
259 NA 259 21.22
260 NA 260 21.15
261 NA 261 21.08
262 NA 262 21.25
263 NA 263 21.41
264 NA 264 21.32
265 NA 265 21.02
266 NA 266 20.85
267 NA 267 20.80
268 NA 268 20.62
269 NA 269 20.37
270 NA 270 20.46
271 NA 271 20.51
272 NA 272 20.58
273 NA 273 20.64
274 NA 274 20.58
275 NA 275 20.46
276 NA 276 20.25
277 NA 277 20.15
278 NA 278 20.06
279 NA 279 19.62
280 NA 280 19.50
281 NA 281 19.58
282 NA 282 19.67
283 NA 283 19.69
284 NA 284 19.91
285 NA 285 19.92
286 NA 286 19.97
287 NA 287 19.93
288 NA 288 19.67
289 NA 289 19.43
290 NA 290 19.55
291 NA 291 19.41
292 NA 292 19.30
293 NA 293 19.00
294 NA 294 18.75
295 NA 295 18.63
296 NA 296 18.28
297 NA 297 18.07
298 NA 298 17.94
299 NA 299 17.75
300 NA 300 17.70
301 NA 301 17.58
302 NA 302 17.39
303 NA 303 17.19
304 NA 304 17.10
305 NA 305 17.09
306 NA 306 17.06
307 NA 307 16.87
308 NA 308 16.77
309 NA 309 16.54
310 NA 310 16.30
311 NA 311 16.10
312 NA 312 16.01
313 NA 313 16.12
314 NA 314 16.12
315 NA 315 16.02
316 NA 316 15.85
317 NA 317 15.75
318 NA 318 15.56
319 NA 319 15.50
320 NA 320 15.10
321 NA 321 14.89
322 NA 322 14.45
323 NA 323 14.21
324 NA 324 14.00
325 NA 325 13.80
326 NA 326 13.65
327 NA 327 13.29
328 NA 328 13.01
329 NA 329 12.96
330 NA 330 12.77
331 NA 331 12.72
332 NA 332 12.59
333 NA 333 12.51
移動和縮放是次軸的完美轉換。 我遇到的一個問題是,您將魚的深度視為離散的,而氧氣深度是連續的。 在下面的示例中,我使您的魚數據連續。
library(ggplot2)
library(scales)
# Assume text1 and text2 are your example data copied as character vector
# I'm just putting this here to show how I loaded the data
fish <- read.table(text = text1)
oxy <- read.table(text = text2)
# Make depth a continuous variable
depth <- lapply(data.table::tstrsplit(fish$Depth, "-"), as.numeric)
fish$depth2 <- (depth[[1]] + depth[[2]]) / 2
ggplot(fish, aes(y = depth2)) +
geom_col(aes(x = ifelse(DayNight == "Night", 1, -1) * Abundance,
fill = DayNight),
orientation = "y") +
# You have to manually transform data for secondary axis
geom_line(aes(rescale(Averaged.O2, to = c(-1, 1) * max(fish$Abundance)),
Depth..m),
data = oxy, orientation = "y") +
scale_y_reverse() + # <- puts zero on top
scale_x_continuous(
name = "Abundance",
labels = abs, # <- this is how to show only positives
# Secondary axis should have inverse transformation
sec.axis = sec_axis(
~ rescale(.x, from = c(-1, 1) * max(fish$Abundance),
range(oxy$Averaged.O2)),
name = "Oxygen"
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.