0

我有来自 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”这样的气泡图。任何人都可以帮助我。谢谢您的帮助在此处输入图像描述

4

1 回答 1

2

您显示的气泡图图像具有映射到大小的相对丰度和映射到颜色的 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
于 2020-11-15T09:29:48.220 回答