gpt4 book ai didi

r - R 中的智能点标签放置

转载 作者:行者123 更新时间:2023-12-03 04:49:10 24 4
gpt4 key购买 nike

  1. 是否有 R 库/函数可以在 R 图中实现智能标签放置?我尝试了一些,但它们都有问题 - 许多标签彼此重叠或与其他点重叠(或图中的其他对象,但我发现这更难处理)。

  2. 如果没有,有什么方法可以轻松地帮助算法对特定问题点进行标签放置吗?想要最舒适、最高效的解决方案。

您可以使用我的可重现示例来尝试和测试其他可能性,看看您是否能够获得比我更好的结果:

# data
x = c(0.8846, 1.1554, 0.9317, 0.9703, 0.9053, 0.9454, 1.0146, 0.9012,
0.9055, 1.3307)
y = c(0.9828, 1.0329, 0.931, 1.3794, 0.9273, 0.9605, 1.0259, 0.9542,
0.9717, 0.9357)
ShortSci = c("MotAlb", "PruMod", "EriRub", "LusMeg", "PhoOch", "PhoPho",
"SaxRub", "TurMer", "TurPil", "TurPhi")

# basic plot
plot(x, y, asp=1)
abline(h = 1, col = "green")
abline(v = 1, col = "green")

对于标签,我尝试了这些可能性,没有一个是真正好的:

  1. 这个太糟糕了:

    文本(x,y,标签= ShortSci,cex= 0.7,偏移量= 10)

  2. 如果您不想为所有点添加标签,而只想为其中的点添加标签,那么这个方法很好。异常值,但标签仍然经常放置错误:

    识别(x,y,标签= ShortSci,cex = 0.7)

  3. 这个看起来很有希望,但存在标签太接近的问题点;我必须用空格填充它们,但这没有多大帮助:

    需要( map 工具)pointLabel(x,y,标签=粘贴(“”,ShortSci,“”,sep =“”),cex = 0.7)

  4. 要求(plotrix)thigmophobe.labels(x, y, labels = ShortSci, cex=0.7, offset=0.5)

require(calibrate)
textxy(x, y, labs=ShortSci, cx=0.7)

提前谢谢您!

编辑: 待办事项:尝试 labcurve {Hmisc} .

最佳答案

首先,这是我解决这个问题的结果:

enter image description here

我在 Preview(OS X 上非常基本的 PDF/图像查看器)中手动完成了此操作,只需几分钟。 (编辑:工作流程正是您所期望的:我从 R 将绘图保存为 PDF,在预览中打开它并创建带有所需标签 (9pt Helvetica) 的文本框,然后将它们拖动用我的鼠标四处移动,直到它们看起来不错。然后我导出到 PNG 以上传到 SO。)

寻找算法解决方案完全没问题,而且(恕我直言)真的很有趣。但是,对我来说,点标签情况大致分为三类:

  1. 您的点数量很少,但没有一个点非常接近。在这种情况下,您在问题中列出的解决方案之一可能只需进行很少的调整即可工作。
  2. 您的点数量很少,其中一些点的排列过于紧密,典型的算法解决方案无法给出良好的结果。在这种情况下,由于您只有少量点,因此手动标记它们(使用图像编辑器或微调对 text 的调用)并不 付出很大的努力。
  3. 您拥有相当多的积分。在这种情况下,您确实不应该为它们添加标签,因为很难直观地处理大量标签。

:爬上肥皂盒:

由于像我们这样的人喜欢自动化,我认为我们经常陷入这样的陷阱,即认为制作良好的统计图表的几乎每个方面都应该自动化。我恭敬地(谦虚地!)不同意。

没有完美通用的统计绘图环境可以自动创建您脑海中的图像。 R、ggplot2、lattice 等工具完成了大部分工作;但是额外的一点调整,在这里添加一条线,在那里调整边距,可能更适合不同的工具。

:从肥皂盒爬下来:

我还要指出的是,我认为我们都可以想出 <10-15 个点的散点图,即使用手也几乎不可能干净地标记,并且这些可能会破坏有人提出的任何自动解决方案。

最后,我想重申,我知道这不是您正在寻找的答案。我并不是说算法尝试是无用或愚蠢的。

我发布这个答案的原因是,我认为这个问题应该是 future 重复的规范“R 中的点标签”问题,而且我认为涉及手动标签的解决方案值得在桌面上占有一席之地,仅此而已。

关于r - R 中的智能点标签放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7611169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com