我正在尝试使用 pgfplots 及其库填充数据和 x 轴之间的区域fillbetween
。我的两次尝试如下所示:
\documentclass[a4paper,11pt]{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{width=10cm,compat=1.13}
\pagestyle{empty}
\begin{document}
\vspace{1cm}
Example using x-axis \\ \\
\begin{tikzpicture}
\begin{axis}[xlabel=A, ylabel=B]
% data
\addplot[name path=D] table [y=B, x=A]{dataB.csv};
% x axis
\path[name path=X]
(\pgfkeysvalueof{/pgfplots/xmin},0) --
(\pgfkeysvalueof{/pgfplots/xmax},0);
% fill between
\addplot[gray!20] fill between[of=D and X];
\end{axis}
\end{tikzpicture}
Example using zero function \\ \\
\begin{tikzpicture}
\begin{axis}[xlabel=A, ylabel=B]
% data
\addplot[name path=D] table [y=B, x=A]{dataB.csv};
% zero function
\addplot[name path=N,domain=0:1]{0};
% fill between
\addplot[gray!20] fill between[of=D and N];
\end{axis}
\end{tikzpicture}
\end{document}
尝试仅在绘制 x 轴的方式上有所不同。然而,结果看起来并不一样:
看起来 x 轴扭曲了(左右都错了)。有人知道如何解决这个问题吗?提前谢谢!
我认为这可能与我的数据有关,因此情况如下:http://pastebin.com/raw/JGKmbtZ5
編輯1:这似乎与数据未形成适当的数学函数有关,即一个 x 值被分配了两个(或更多)y 值。请参阅以下示例:
\documentclass[a4paper,11pt]{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{width=10cm,compat=1.13}
\pagestyle{empty}
\begin{document}
Not a mathematical function \\ \\
\begin{tikzpicture}
\begin{axis}[xlabel=A, ylabel=B]
% data
\addplot[name path=D] coordinates {(0,1) (0,0.5) (1,2)};%table [y=B, x=A]{dataB.csv};
% zero function
\addplot[draw=none, name path=N,domain=0:1]{0};
% fill between
\addplot[gray!20] fill between[of=D and N];
\end{axis}
\end{tikzpicture}
\end{document}
編輯2:问题似乎只发生在数据以直线向下开始时。当(数学上)未定义的数据点出现在起点和终点之间时,fillbetween 会按预期工作:
\addplot[name path=D] coordinates {(0,1) (1,1) (0.5,0.5) (2,1)};
我想我必须在图表开头插入一个人工数据点以避免出现这个问题。