我有来自 indicspecise R 包的数据框,如下所示
organisms indicator_value R_G1 p_G1 R_G2 p_G2 R_G3 p_G3 ..
A .98. 01 .05. .2. 05 .09. 02
B .98 .05 NA .1. 03 .09. 04
C .98 .02.. 02 .07 NA .2 0.02
我想画一个像“https://ibb.co/Pt7CM7P”这样的气泡图。任何人都可以帮助我。谢谢您的帮助
您显示的气泡图图像具有映射到大小的相对丰度和映射到颜色的 p 值,但是您的数据框只有一个数值来映射到每个点。为了说明,我已将这个单一值映射到颜色和大小。
第一步是将数据转换为长格式以允许直接的变量映射。正确执行此操作取决于原始数据的精确结构,因此如果您打算在不同的数据框布局上使用代码,则可能必须更改此设置。
library(ggplot2)
df <- tidyr::pivot_longer(df, -1)
ggplot(df[df$name != "indicator_value",], aes(name, organisms)) +
geom_point(aes(size = value, color = value)) +
geom_text(data = df[df$name == "indicator_value",],
aes(label = value), check_overlap = TRUE) +
scale_color_gradient(low = "red", high = "gold") +
scale_x_discrete(position = "top") +
scale_size(range = c(2, 10)) +
geom_vline(xintercept = 1.5) +
theme_bw() +
theme(legend.position = "bottom")
数据
df <- structure(list(organisms = structure(1:3, .Label = c("A", "B",
"C"), class = "factor"), indicator_value = c(0.98, 0.98, 0.98
), R_G1 = c(1, 0.05, 0.02), p_G1 = c(0.05, NA, 0.02), R_G2 = c(0.2,
0.1, 0.07), p_G2 = c(5L, 3L, NA), R_G3 = c(0.09, 0.09, 0.2),
p_G3 = c(0.02, 0.04, 0.02)), class = "data.frame", row.names = c(NA,
-3L))
df
#> organisms indicator_value R_G1 p_G1 R_G2 p_G2 R_G3 p_G3
#> 1 A 0.98 1.00 0.05 0.20 5 0.09 0.02
#> 2 B 0.98 0.05 NA 0.10 3 0.09 0.04
#> 3 C 0.98 0.02 0.02 0.07 NA 0.20 0.02