我正在处理一个非常大的数据集 - 几乎有 120,000 个观测值 - 并且我正在使用 pgfplots 制作一些图表。这个过程很顺利,特别是使用外部库时,但 pdf 文档需要很长时间才能加载。似乎 Adobe 正在单独绘制每个数据点。
有没有更好的方法来使用 pgfplots 使图表更容易呈现?
我的设置是:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize
\begin{document}
\begin{figure}[h]
\footnotesize
\centering
\caption{Publicly Available Num Tested, MEAP\_stacked Number Valid}
\begin{tikzpicture}
\begin{axis}[
only marks,
width=6.2in,
ylabel={Number Tested, Public Data},
xlabel={Number Valid, Our Data},
area legend,
legend style = {at={(axis cs:700,0)},anchor=south east},
xmin=-50,
ymin=-50]
\input{statistics/Num_Valid_Writing.tex}
\addlegendentry{Writing}
\input{statistics/Num_Valid_Math.tex}
\addlegendentry{Math}
\input{statistics/Num_Valid_ELA.tex}
\addlegendentry{ELA}
\input{statistics/Num_Valid_Science.tex}
\addlegendentry{Science}
\input{statistics/Num_Valid_SS.tex}
\addlegendentry{Social Studies}
\input{statistics/Num_Valid_Reading.tex}
\addlegendentry{Reading}
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
我正在使用 pdfLaTeX 和带有 TeXLive 的 Ubuntu。
谢谢!
答案1
这个答案可能需要 pgf CVS,我不知道。
可以定制外部库来自行生成 png——具有正确缩放的图像。
pgf(CVS?)的 pgfmanual 在其外部库文档的第 34.7 节“位图图形导出”中详细描述了该过程。
诀窍是使用
\tikzset{
% Defines a custom style which generates BOTH, .pdf and .png export
% but prefers the .png on inclusion.
%
% This style is not pre-defined, you may need to copy-paste and
% adjust it.
png export/.style={
external/system call/.add={}{; convert -density 300 -transparent white "\image.pdf" "\image.png"},
%
/pgf/images/external info,
/pgf/images/include external/.code={%
\includegraphics
[width=\pgfexternalwidth,height=\pgfexternalheight]
{##1.png}%
},
},
%
png export,% ACTIVATE
}
在你的序言中。
涉及三个步骤:
a) 修改系统调用(没问题,任何版本的外部库都可以)
b)/pgf/images/external info
密钥(可能仅是 pgf CVS)为每个导出的图像生成 TeX 尺寸信息并进行适当存储。
\pgfexternalwidth
c)加载图像时的使用(这实际上是这个“外部信息”的输出)。
我建议的解决方案中的语句\tikzset
定义了一种新样式“png 导出”。您可以只为单张图片启用它,而不是像我的解决方案那样全局启用它,方法是
{% from here on, png export will be used....
\tikzset{png export}%
\begin{tikzpicture}
....
\end{tikzpicture}
}% here ends the png export
答案2
存在一个阈值,在此阈值上,给定的绘图最好以光栅图像的形式显示。这是矢量格式的固有限制。
最简单的解决方案是向外部化过程添加一个步骤,以便将外部 PDF 中的图转换为光栅格式。例如:
convert -density 600 external_file.pdf -scale 800 external_file.png
mv external_file.pdf external_file-bak.pdf
图像的质量可以通过 Imagemagic“转换”命令中的选项来控制。
为了获得更好的结果,可以将其与手册中第 4.2.8 节“使用外部图形作为绘图源”中描述的技术相结合,这样只有绘图而不是轴是光栅图像;但这需要更多的工作。