考虑下面的图表
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepgfplotslibrary{statistics}
\begin{document}
\pgfplotstableread[col sep = semicolon,]{
Step;Nodes;Max iteration;Phase -1.0;Phase 0.0;Phase 1.0;Phase 1.1;Phase 2.0;Phase 3.0;Phase 3.1;Phase 4.0;Phase 5.0
0;1024;0;0;0;0;0;0;0;0;0;0
1;1024;0;2050;0;0;0;0;0;0;0;0
2;1024;0;321946;0;0;0;0;0;0;0;0
3;1024;0;1048576;0;25728;0;0;0;0;0;0
4;1024;0;222208;0;17368;0;0;0;0;0;0
5;1024;0;0;0;54872;0;0;0;0;0;0
6;1024;0;0;0;227320;0;0;0;0;0;0
7;1024;0;0;0;454640;0;0;0;0;0;0
8;1024;0;0;0;3536516;0;0;0;0;0;0
9;1024;0;0;0;7073032;0;0;0;0;0;0
10;1024;0;0;0;3580956;0;0;0;0;0;0
11;1024;0;0;0;7161912;0;0;0;0;0;0
12;1024;0;0;0;2454655;0;0;0;0;0;0
13;1024;0;0;0;4909310;0;0;0;0;0;0
14;1024;0;0;0;0;1356920;0;0;0;0;0
15;1024;0;0;0;0;0;0;4096;0;0;0
16;1024;0;0;0;0;0;0;4096;0;0;0
17;1024;0;0;0;0;0;0;3135;2078;0;0
18;1024;0;0;0;0;0;0;1490;794;650;0
19;1024;0;0;0;0;0;0;2100;1448;602;0
20;1024;1;0;0;0;0;0;412;576;1568;0
21;1024;1;0;0;0;0;0;391;224;768;0
22;1024;1;0;0;3308;0;0;427;84;370;0
23;1024;1;0;0;11696;0;0;70;4;126;0
24;1024;1;0;0;13192;0;0;18;4;7;0
25;1024;1;0;0;23748;0;0;14;0;5;0
26;1024;1;0;0;34840;0;0;2;0;0;0
27;1024;1;0;0;69984;0;0;0;0;0;0
28;1024;1;0;0;94960;0;0;0;0;0;0
29;1024;1;0;0;73144;0;0;0;0;0;0
30;1024;1;0;0;453904;0;0;0;0;0;0
31;1024;1;0;0;3528761;0;0;0;0;0;0
32;1024;1;0;0;7057522;0;0;0;0;0;0
33;1024;1;0;0;3579108;0;0;0;0;0;0
34;1024;1;0;0;7158216;0;0;0;0;0;0
35;1024;1;0;0;2452831;0;0;0;0;0;0
36;1024;1;0;0;4905662;0;0;0;0;0;0
}\mydata
\begin{tikzpicture}
\begin{semilogyaxis}[
width=20cm,
xlabel=time (steps),
ylabel=messages delivered by network,
ymin=1,
xmin=0,
ymax=10000000,
ymajorgrids,
cycle list name=exotic,
legend pos= outer north east,
unbounded coords=jump,
]
\addplot
table [
x=Step,
y=Phase -1.0,
mark=none,
restrict expr to domain={x}{0:300},
]{\mydata};
\addlegendentry{Initialization};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}
pgfplots
似乎跳过了零值。如果相应 y 列中的单元格显示 0,我希望线条降为零。到目前为止,我发现unbounded coords=jump
忽略零数据点并且根本不画线的选项。另一个选项是unbounded coords=discard
连接非零点 - 即使它们之间有间隙。是否有一个隐藏选项可以让 pgfplots 绘制列中的内容?
答案1
与仅将 1 加到全部坐标我建议使用该ifthenelse
函数将所有零值设置为该ymin
值。
(请注意,我已对您给出的一些选项进行了评论,只是为了节省这个答案的一些空间。)
% used PGFPlots v1.14
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
% use this `compat' level or higher to use the "advanced" positioning feature
% of the axis labels
\pgfplotsset{compat=1.3}
\begin{document}
\pgfplotstableread[col sep=semicolon]{
Step;Nodes;Max iteration;Phase -1.0;Phase 0.0;Phase 1.0;Phase 1.1;Phase 2.0;Phase 3.0;Phase 3.1;Phase 4.0;Phase 5.0
0;1024;0;0;0;0;0;0;0;0;0;0
1;1024;0;2050;0;0;0;0;0;0;0;0
2;1024;0;321946;0;0;0;0;0;0;0;0
3;1024;0;1048576;0;25728;0;0;0;0;0;0
4;1024;0;222208;0;17368;0;0;0;0;0;0
5;1024;0;0;0;54872;0;0;0;0;0;0
6;1024;0;0;0;227320;0;0;0;0;0;0
7;1024;0;0;0;454640;0;0;0;0;0;0
8;1024;0;0;0;3536516;0;0;0;0;0;0
9;1024;0;0;0;7073032;0;0;0;0;0;0
10;1024;0;0;0;3580956;0;0;0;0;0;0
11;1024;0;0;0;7161912;0;0;0;0;0;0
12;1024;0;0;0;2454655;0;0;0;0;0;0
13;1024;0;0;0;4909310;0;0;0;0;0;0
14;1024;0;0;0;0;1356920;0;0;0;0;0
15;1024;0;0;0;0;0;0;4096;0;0;0
16;1024;0;0;0;0;0;0;4096;0;0;0
17;1024;0;0;0;0;0;0;3135;2078;0;0
18;1024;0;0;0;0;0;0;1490;794;650;0
19;1024;0;0;0;0;0;0;2100;1448;602;0
20;1024;1;0;0;0;0;0;412;576;1568;0
21;1024;1;0;0;0;0;0;391;224;768;0
22;1024;1;0;0;3308;0;0;427;84;370;0
23;1024;1;0;0;11696;0;0;70;4;126;0
24;1024;1;0;0;13192;0;0;18;4;7;0
25;1024;1;0;0;23748;0;0;14;0;5;0
26;1024;1;0;0;34840;0;0;2;0;0;0
27;1024;1;0;0;69984;0;0;0;0;0;0
28;1024;1;0;0;94960;0;0;0;0;0;0
29;1024;1;0;0;73144;0;0;0;0;0;0
30;1024;1;0;0;453904;0;0;0;0;0;0
31;1024;1;0;0;3528761;0;0;0;0;0;0
32;1024;1;0;0;7057522;0;0;0;0;0;0
33;1024;1;0;0;3579108;0;0;0;0;0;0
34;1024;1;0;0;7158216;0;0;0;0;0;0
35;1024;1;0;0;2452831;0;0;0;0;0;0
36;1024;1;0;0;4905662;0;0;0;0;0;0
}\mydata
\begin{tikzpicture}
\begin{semilogyaxis}[
% width=20cm,
xlabel=time (steps),
ylabel=messages delivered by network,
ymin=1,
xmin=0,
ymax=10000000,
ymajorgrids,
cycle list name=exotic,
% legend pos=outer north east,
no markers,
]
\addplot table [
x=Step,
y expr={
ifthenelse(
\thisrow{Phase -1.0} == 0,
\pgfkeysvalueof{/pgfplots/ymin},
\thisrow{Phase -1.0}
)
},
] {\mydata};
\addlegendentry{Initialization};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}