r - 从标签画线到R中的点

标签 r lines labels

我目前正在尝试生成一个自动化脚本来创建一个带标签的折线图。此折线图将具有 1 个或多个最大值,如果它们高于某个阈值,则必须对其进行标记。
目前我可以很好地标记最大值。

https://drive.google.com/file/d/0B50V8cCfhJDQWF94SG85NXVZY1k/view?usp=sharing

为此,我在校准包中使用 textxy()

然而,当出现多个峰值时,事情会变得更加复杂:

https://drive.google.com/file/d/0B50V8cCfhJDQUmF5VERhUV8zNmc/view?usp=sharing

很快就很难看到标签被分配到哪里了。所以我想要的是从标签到峰顶(或正下方)的一条线。

我今天环顾四周一整天都没有运气。我在 Intelligent point label placement in R 中尝试了所有方法

wordcloud,但不幸的是,这不允许您偏移标签,如果您只有一个标签,则会失败。

识别,太慢了。我需要能够自动执行此操作以每天处理数千张图像。

pointLabel、thigmophobe.labels 都不起作用,因为它们不画线,而且我也没有处理很多标签。

我还尝试在标签和点之间手动绘制箭头,但这非常耗时。

有谁知道任何软件包或简单的方法来做到这一点?这不能自动化吗?

谢谢!
卡梅伦

最佳答案

您可以试试 labelPeaks MALDIquant提供的功能包裹。其放置峰标签的算法取自 Ian Fellows 的 wordcloud::wordlayout .

library("MALDIquant")

data("fiedler2009subset")

## a simplified preprocessing to provide some example data
s <- trim(fiedler2009subset[[1]], c(3000, 3500))
r <- removeBaseline(s)
p <- detectPeaks(r)

## plot the peaks and label them
plot(p, ylim=c(0, 30000))
labelPeaks(p, avoidOverlap=TRUE, underline=FALSE, digits=1)

enter image description here
## rotate labels by 90 degree
plot(p, ylim=c(0, 30000))
labelPeaks(p, underline=FALSE, srt=90, adj=c(0, 0.5), col="red")

enter image description here
## label peaks above 5000
plot(p, ylim=c(0, 30000))
labelPeaks(p, index=intensity(p) > 5000)

enter image description here

请查看 ?labelPeaks更多细节。

关于r - 从标签画线到R中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249923/

相关文章:

r - 如何生成像 cor() 这样的线性回归矩阵

windows - Windows批处理文件运行所有标签的问题

r - 使用 R 从 csv 文件(有一些不一致)创建动物园对象

python - 是不是 "bad"在顶层定义闭包,只能在函数内部调用?如果是这样 : alternatives?

r - 无法安装flextable

BASH - 随机播放文件中字符串中的字符

vim 有限行内存

javascript - Canvas :在填充矩形顶部绘制线条

matplotlib:向极坐标图刻度标签添加填充/偏移

properties - Neo4j中的Label和Property有什么区别?