在基因组学领域,人们经常会制作一种称为曼哈顿图的东西,它由代表数百万个 p 值的点组成:
以矢量格式显示的速度非常慢,一些查看器根本无法处理它,但在这种情况下,光栅图像更容易打开,但当然我们更喜欢矢量图形;)。
在图的底部,我们可以看到点的密度非常高,我们可以将它们连接成一个填充区域,这将极大地减轻计算负担。
如何在 TeX 中做到这一点?正如其中一个答案所建议的那样,应该可以在矢量图形编辑器中获得附近点的并集,但这需要大量工作。理想情况下,人们希望将每个点视为一条路径,并且在绘图过程中,逐点执行并集操作,这样最终整个绘图将得到最大程度的简化。
答案1
我不知道你的 R 表达式到底有什么用。不过,这里有一个包含 50,000 个点的类似解决方案。使用xelatex
或latex
-> dvips
->运行它ps2pdf
:
\documentclass{article}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}(10,14)
\psset{xunit=0.5}
\psaxes[Dx=2](23,10)
\psplot[plotpoints=50000,plotstyle=dots,dotscale=0.5]{0.01}{23}
[3 srand]{ x cvi 2 mod 0 eq {0 setgray}{0.5 setgray}ifelse
Rand log neg 2 mul 0.6 sub }
\psline[linecolor=blue](0,5)(23,5)
\psline[linecolor=red](0,8)(23,8)
\end{pspicture}
\end{document}
答案2
我的建议是使用矢量编辑程序打开输出文件,选择每个区域的绘制点,然后取它们的交点。这样做会为每个绘图区域的周长留下一个矢量。
这假设文件中的点被渲染为小的重叠圆圈,而不是具有某些相应直径的点。
我同意 David 和 Ruedi 的观点,图像只需要简化一次,而不是在编译文档时重复处理。
答案3
这不是一个 LaTeX 解决方案,但我最近发现了一种使用 R 包将中等大小的曼哈顿图作为矢量图形导出为 PDF 的方法sf
和ggplot2
. 然后可以轻松地将它们包含在 LaTeX 文档中。
与@Steven Endres 建议的类似,我的方法是对重叠点进行合并,以降低最终图形的复杂性(由大部分重叠点组成的大区域对于每个染色体来说都变成单一形状)。
我编写了一个 R 函数,根据一组汇总统计数据绘制这些简化的曼哈顿图可在 GitHub 上获取。该 repo 还包含一个可重现的示例。