我在论文中使用 pgfplots 绘制了几个图,但绘制了一半左右时编辑器就出现了加载日志文件的问题。有人能建议我减少这个问题的方法吗?我得到的错误是“坐标 (,) 因坐标过滤器而被删除。(另请参阅 unbounded coords=jump)”。我的所有图都是使用 pgfplots 添加的,所以我真的不想回去将它们作为图像导入(尤其是因为它们看起来不太好!)。我正在使用 TeXstudio 这是我的一个图的代码示例;
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{units}
\begin{document}
\begin{figure}[h!]
\begin{center}
\begin{tikzpicture}
\begin{axis}[ytick pos=left,xtick pos=left,
%title=Particle size variation as a func. of CTA concentration,
xlabel = $\dot{\gamma}$,
ylabel = $\eta$,
y unit=\si{\pascal\second},
x unit=\si{\second^{-1}},
%ymin=55,
%ymax=70,
ymode=log,
log ticks with fixed point,
xmode=log,
log ticks with fixed point,
% for log axes, x filter operates on LOGS.
% and log(x * 1000) = log(x) + log(1000):
%x filter/.code=\pgfmathparse{#1 + 6.90775527898214},
legend style={draw=none},legend pos = outer north east, %outer if you like
%width=300,height=280,
width=340,height=230,
%axis lines=left,
enlargelimits=.1 % <- adds 10% of the axis range on both sides
]
\addplot[only marks,mark = *,mark size=2,]table [x=B18x,y=B18y,col sep=comma,]{barea.csv};
\addlegendentry{15 vol\%}
\addplot[only marks,mark = diamond*,blue,mark size=2,]table [x=B16x,y=B16y,col sep=comma,]{barea.csv};
\addlegendentry{14 vol\%}
\addplot[only marks,mark = triangle*,green,mark size=2,]table [x=B14x,y=B14y,col sep=comma,]{barea.csv};
\addlegendentry{12 vol\%}
\addplot[only marks,mark = pentagon*,yellow,mark size=2,]table [x=B10x,y=B10y,col sep=comma,]{barea.csv};
\addlegendentry{8 vol\%}
\addplot[only marks,mark = asterisk,orange,mark size=2,]table [x=B6x,y=B6y,col sep=comma,]{barea.csv};
\addlegendentry{5 vol\%}
\addplot[only marks,mark = +,red,mark size=2,]table [x=B2x,y=B2y,col sep=comma,]{barea.csv};
\addlegendentry{2 vol\%}
\addplot[only marks,mark = o,mark size=2,]table [x=B18xh,y=B18yh,col sep=comma,]{barea.csv};
\addplot[only marks,mark = diamond,blue,mark size=2,]table [x=B16xh,y=B16yh,col sep=comma,]{barea.csv};
\addplot[only marks,mark = triangle,green,mark size=2,]table [x=B14xh,y=B14yh,col sep=comma,]{barea.csv};
\addplot[only marks,mark = pentagon,yellow,mark size=2,]table [x=B10xh,y=B10yh,col sep=comma,]{barea.csv};
\addplot[only marks,mark = star,orange,mark size=2,]table [x=B6xh,y=B6yh,col sep=comma,]{barea.csv};
\addplot[only marks,mark = x,red,mark size=2,]table [x=B2xh,y=B2yh,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B18xc,y=B18yc,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B16xc,y=B16yc,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B14xc,y=B14yc,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B10xc,y=B10yc,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B6xc,y=B6yc,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B2xc,y=B2yc,col sep=comma,]{barea.csv};
\addplot[only marks,mark = x,orange,mark size=2,]table [x=B1x,y=B1y,col sep=comma,]{barea.csv};
\addplot[mark=none,domain=0:4]table [x=B1xc,y=B1yc,col sep=comma,]{barea.csv};
\end{axis}
\end{tikzpicture}
\caption{Bare}
\label{fig:Bare}
\end{center}
\end{figure}
\end{document}
有什么办法可以解决这个问题吗?如果这个问题很愚蠢,请原谅我 - 我对乳胶还比较陌生!
答案1
您可能应该通过 pgf 密钥访问它,但我没有看到它,但您可以通过添加来关闭过滤器日志记录
\makeatletter
\pgfplots@warn@for@filter@discardsfalse
\makeatother
加载包后,进入你的序言。
请注意,您的示例会产生错误
! Undefined control sequence.
\pgfk@/pgfplots/x unit ->\si
{\second ^{-1}}
l.61 \end{axis}
但这似乎无关。
答案2
我可能会使用externalize
,即添加
\usepgfplotslibrary{external}
\tikzexternalize
在您的文档前言中,请参阅 pgfplots 手册第 3.2.6 节。然后,您只需一次获得大型日志文件,还可以在后续编译中节省一些时间。
答案3
您的示例(不带\si
)给我一个 1.4MB 的日志文件,长 26858 行。其中 26244 行来自这两行的 13122 个实例
NOTE: coordinate (,) has been dropped because of a coordinate filter. (see also
unbounded coords=jump).
因此大约 98% 的日志行都是因为这个。
但您的 CSV 实际上是多对列,它们恰好位于同一个文件中。它类似于:
B18x,B18y,B16x,B16y,B14x,B14y
1, 2, 3, 4, 5, 6
7, 8, 9, 10, ,
11, 12, , , ,
例如,您永远不会同时对 B18y 和 B16x 执行任何操作。事实上,您有 20 对列,您将其读入 20 个不同的绘图命令。然而,您的 CSV 有 13122 个空白坐标对,这与警告数量非常接近,这令人怀疑。
因此,正确的方法是将不同的数据分成不同的文件(可能放在它们自己的子目录中,以保证完整性)。然后,您将加载仅包含 B18x 和 B18y 列的 B18.csv,并且您将加载仅包含 B18xh 和 B18yh 列的 B18h.csv。
但如果你不想创建 20 个不同的文件,你可以添加
filter discard warning=false,
到轴选项。这样日志文件就减少到 614 行。缺点是,如果您丢弃了本应是有效点的内容,您将不会发现它。