当 x 轴为分类轴时,如何在 R 中绘制累积死亡率?

问题描述 投票:0回答:1

我想绘制在不同条件下饲养的个体在发育过程中的累积死亡率。 X1 是一个有序分类变量,代表我的研究物种的不同生命阶段 (E,1,2,3,4,P),X2 是一个分类变量,代表个体成长的不同条件(五个不同条件 a-e) 。我的数据如下:

X2  X1  Cumulative.%.mortality
a   E   19.64285714
b   E   28.16901408
c   E   26.66666667
d   E   49.72972973
e   E   78.84615385
a   1   26.78571429
b   1   32.3943662
c   1   29.09090909
d   1   51.89189189
e   1   79.80769231
a   2   26.78571429
b   2   40.84507042
c   2   31.51515152
d   2   52.97297297
e   2   79.80769231
a   3   28.57142857
b   3   53.52112676
c   3   33.93939394
d   3   56.21621622
e   3   79.80769231
a   4   30.35714286
b   4   56.33802817
c   4   41.81818182
d   4   58.37837838
e   4   82.21153846
a   P   30.35714286
b   P   56.33802817
c   P   42.42424242
d   P   58.37837838
e   P   82.21153846

每个数据点代表在特定生命阶段或之前死亡的个体百分比(添加到第一个生命阶段 E 开始时的不同条件)。 1/c 的值代表在 c 条件下在生命阶段 1(和 E)死亡的个体的百分比。

我希望有一条线连接每个数据点,并且对于 X2 的每个不同条件都有单独的线。

我尝试过在 R 中使用plot()函数,但这只会为每个生命阶段带来单独的箱线图。

r ggplot2 plot
1个回答
0
投票

X1
转换为具有正确级别的因子,并使用
geom_step
中的
ggplot
绘制结果:

library(tidyverse)

df %>%
  mutate(X1 = factor(X1, unique(X1))) %>%
  ggplot(aes(X1,`Cumulative.%.mortality`, group = X2)) +
  geom_step(aes(color = X2), linewidth = 1) +
  scale_color_brewer(palette = "Set1") +
  theme_minimal(base_size = 20) +
  scale_y_continuous("Cumulative mortality (%)", limits = c(0, 100))


问题中的数据采用可重现的格式

df <- structure(list(X2 = c("a", "b", "c", "d", "e", "a", "b", "c", 
"d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", 
"b", "c", "d", "e", "a", "b", "c", "d", "e"), X1 = c("E", "E", 
"E", "E", "E", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2", 
"3", "3", "3", "3", "3", "4", "4", "4", "4", "4", "P", "P", "P", 
"P", "P"), `Cumulative.%.mortality` = c(19.64285714, 28.16901408, 
26.66666667, 49.72972973, 78.84615385, 26.78571429, 32.3943662, 
29.09090909, 51.89189189, 79.80769231, 26.78571429, 40.84507042, 
31.51515152, 52.97297297, 79.80769231, 28.57142857, 53.52112676, 
33.93939394, 56.21621622, 79.80769231, 30.35714286, 56.33802817, 
41.81818182, 58.37837838, 82.21153846, 30.35714286, 56.33802817, 
42.42424242, 58.37837838, 82.21153846)), class = "data.frame", 
row.names = c(NA, -30L))
© www.soinside.com 2019 - 2024. All rights reserved.