首页 > 解决方案 > 如何制作 BW 图以显示数据

问题描述

我从种子库中提取了种子,在树冠下和树冠 3 m 处。我有这两个国家的三个研究地点的这些数据,南澳大利亚和斯里兰卡(部分数据已附上)。下面给出了我用来使用 lattice 开发 BW 图的脚本。事实上,我在这里为这两个国家分别准备了两个地块。我想开发这个图表。我想在地块的一侧显示一个国家(南澳大利亚)的数据(在皇冠下方和 3m 之外的 2 种颜色),而另一个国家(斯里兰卡)的另一侧相同的两种颜色显示在皇冠下方和 3m 之外.

部分数据集

setwd("E:/Research/Fieldwork SL-data/Seed bank/analysis")

seed.bank <- read.csv(file="seedbank_rev.csv", header=TRUE, sep=',')
attach(seed.bank)
names(seed.bank)
## [1] "seed.no."   "location"   "study.site" "country"   

seed.bank1<-seed.bank[!(country=="Sri Lanka"),]
seed.bank2<-seed.bank[!(country=="South Australia"),]

library("lattice")

bwplot(log(seed.no.) ~ study.site | location, data=seed.bank1, xlab="Study Sites in South Australia", ylab="log(seed number)")
bwplot(log(seed.no.) ~ study.site | location, data=seed.bank2, xlab="Study Sites in Sri Lanka", ylab="log(seed number)")

标签: r

解决方案


一个简单的 R 基础解决方案似乎是您的问题是条形图(因为您有分类变量):

# define dataframe:
df <- data.frame(
  location = c(rep("beneath",1), rep("at_distance",4),rep("beneath",4), rep("at_distance",3)),
  country = c(rep("SA",6),rep("SL",6))
)

# check structure:
str(df)

这一步表明数据被格式化为因子。这些需要转换为字符以获得频率计数:

# convert factors to characters:
df <- lapply(df, as.character)

# make frequency table:
freq_seeds <- table(df$country, df$location)

现在您可以绘制数据了;并排放置相应条的关键参数是beside=TRUE

# define plotting region:
par(mfrow=c(1,1), mar=c(4,4,4,4))
# barplot:
barplot(freq_seeds, beside=T, main="Seeds", col=c("blue", "green"))
# draw legend:
legend("topright", c("South Australia", "Sri Lanka"), fill=c("blue", "green"), col=c("blue", "green"))

在此处输入图像描述


推荐阅读