r - 如何制作 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 基础解决方案似乎是您的问题是条形图(因为您有分类变量):
# 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"))
推荐阅读
- java - 有没有办法将 Android 应用程序连接到 oneDrive 或 Sharepoint 中的 Excel 数据源?
- python-3.x - 如何使用python2中保存的python3 pkl文件导入
- python - 在init内部获取窗口宽度和高度
- javascript - 为什么我不能单击导航栏的锚标记?
- javascript - 如何修复“错误:未找到 HTMLHint,...,CodeMirror HTML linting 无法运行。” CodeMirror 中的错误
- javascript - EventSource 在 addEventListener 之前错过了第一条消息
- python - 如何使用模型中的值填充 PDF
- r - 使用 R Blogdown blogdown:::serve_site() 时出错
- c# - 使用 RestSharp 在 multipart/form-data POST 中包含文件时遇到问题
- c# - 当 RegisterEventBus “没有注册 Autofac.ILifetimeScope' 类型的服务时。”