2017-06-13 254 views
-1

我有一个表格,里面有多个样本的物种丰度。我想制作一张气泡图,在y轴上,我将拥有不同的物种,在x轴上显示我找到这些物种的不同样品,而气泡的半径表明物种的相对尺寸。用R制作气泡图

我的表是这样的:

Samples Sample1 Sample2 Sample3 Sample4 Sample5 
Species1 12 25 25 25 25 
Species2 12 23 23 23 23 
Species3 12 21 21 21 21 
Species4 12 19 19 19 19 
Species5 12 17 17 17 17 
Species6 1 15 15 15 15 
Species7 5 13 13 13 13 

我想要的东西落得像this

+0

你能更好地解释预期的输出? – Al14

回答

0

随着tidyrggplot2

library(tidyverse) 

data <- read.table(text = "Samples Sample1 Sample2 Sample3 Sample4 Sample5 
        Species1 12 25 25 25 25 
        Species2 12 23 23 23 23 
        Species3 12 21 21 21 21 
        Species4 12 19 19 19 19 
        Species5 12 17 17 17 17 
        Species6 1 15 15 15 15 
        Species7 5 13 13 13 13", header = T) 
data %>% 
    gather(sample, value, Sample1:Sample5) %>% 
    ggplot(aes(sample, Samples, size = value)) + 
    geom_point() 

0

这里有一个基础的解决方案:

df <- read.table(text="Samples Sample1 Sample2 Sample3 Sample4 Sample5 
Species1 12 25 25 25 25 
Species2 12 23 23 23 23 
Species3 12 21 21 21 21 
Species4 12 19 19 19 19 
Species5 12 17 17 17 17 
Species6 1 15 15 15 15 
Species7 5 13 13 13 13", header=T) 

df <- reshape2::melt(df) 
par(mar=c(4.1,6.1,2.1,4.1), xpd=T) 
plot(y=as.integer(df$Samples), x=as.integer(df$variable), pch=20, cex=df$value/10, bty="n", axes = F, xlab="", ylab="") 
axis(2, at = unique(as.integer(df$Samples)), labels = levels(df$Samples), line = 0.5, las=2) 
axis(1, at = unique(as.integer(df$variable)), labels = levels(df$variable), line = 0.5) 
legend(y=max(as.integer(df$Samples)/1.5), x=max(as.integer(df$variable))+0.25, legend = c(1,5,10,15,20,25), pch = 20, bty="n", pt.cex=c(1,5,10,15,20,25)/10) 

enter image description here