我有大量数据需要绘制(大约 100000 个点)在一个图中。但是 pgfplot 给出了错误。它绘制的最大点数限制是多少。但是 gnuplot 给出了图,而 pgfplot 没有给出。
答案1
100000 个点通常超出了 pgfplots 的能力(除非使用极端的内存设置,可能会禁用标记)。
另一种满足内存限制(以及运行 latex 时的耐心)并仍然使用 pgfplots 进行轴描述的方法是采用其\addplot graphics
方法:在那里,您可以使用 gnuplot 生成可视化(散点图?),但将 gnuplot 配置为排除任何轴。然后,将生成的图形(作为.eps
或.png
)包含到 pgfplots 中,仅配置数据限制。然后 PGFPlots 将包含图形并自动覆盖其轴描述(基于您提供的数据限制)。pgfplots 手册包含一个示例(甚至一个从 gnuplot 输出中获取其图像数据的示例)。
答案2
我认为在这种情况下,我会在将数据发送到 pgfplot 之前对其进行抽取。考虑一下,如果您的图表宽度最多为 10 厘米,那么拥有这么多数据点意味着它们之间的距离可能只有一微米,而您肯定无法在输出中辨别出这一点。
答案3
如果需要,pgfplots 可以使用 自行抽取数据,使用方法each nth point={x}
如下:
\addplot table [each nth point={100},...] {your/table/here};
在示例中,pgfplots 将在数据集中每 100 个点绘制 1 个。您可以随意调整数字,直到 pgfplots 不返回错误并且您的绘图看起来不错。我建议也外部化此类编译密集型绘图。
答案4
在 TeXLive 2009 的默认内存限制(3000000)下,我仅使用点(无线)将限制确定为 12175 个点。该数字可能因同一页面中的其他图和其他因素(如点装饰)而异。请参阅 如何预测 pgfplots 内存过载?