r - 在绘图中注释/标记区域
问题描述
我有以下图表:
该图(红色字母除外)由以下代码生成:
boundary12 <- c(0.01, 0.005, 0.002, 0.001)
boundary23 <- c(0.1, 0.05, 0.02, 0.01)
boundary34 <- c(0.5, 0.6, 0.7, 0.55)
plot(boundary12, type="lines", ylim=c(0,1), xlab="Pollution level", ylab="Probability of event")
lines(boundary23)
lines(boundary34)
问题:
1)如果我生成很多图表,有没有办法半自动地把红色字母放进去?
2) 有没有办法给区域着色,例如区域 1 是蓝色,区域 2 是黄色,区域 3 是绿色?
解决方案
可以通过计算多边形质心来自动放置注释。
plot(boundary12, type="n", ylim=c(0,1), xlab="Pollution level",
ylab="Probability of event")
poly12 <- data.frame(x=c(1:4, 4:1), y=c(boundary12, rev(boundary23)))
poly23 <- data.frame(x=c(1:4, 4:1), y=c(boundary23, rev(boundary34)))
poly34 <- data.frame(x=c(1:4, 4:1), y=c(boundary34, rep(1, 4)))
polygon(poly12, border="#00000066", col="skyblue")
polygon(poly23, border="#00000066", col="gold")
polygon(poly34, border="#00000066", col="darkolivegreen3")
library(maps)
centroid <- maps:::centroid.polygon
p12 <- centroid(poly12)
p23 <- centroid(poly23)
p34 <- centroid(poly34)
textcoor <- rbind(p12, p23, p34)
textcoor[1, 1] <- textcoor[1 ,1] * 0.8 # to smooch nr1 a bit to the left
text(textcoor, labels=1:3, col="darkblue", cex=1.2)
推荐阅读
- java - 有没有办法让多个线程顺序访问共享资源列表?
- c# - 从任务计划程序运行时,ClearScript ExtendedHostFunctions 会杀死 EXE?
- xamarin - 是否可以在另一个类中覆盖 DidEnterBackground?
- python - 如何要求生成的数据透视表包含所有列组合的可能性?
- python - 找出不包含数字 d 的数字
- python - to_categorical 的输出:第四个维度代表什么?
- android - 从 API 检索数据时有一条消息(未找到数据),除了在一个地方显示数据外,它还有效
- ruby-on-rails - 如何修复'Errno::ENOENT(没有这样的文件或目录@realpath_rec - /home/admin/project/spec/mailers)'Ruby on rails?
- ssl - NGINX 上的 SSL 终止
- c - 如何防止这种 pthread 同步内存踩踏?