由于某种原因,第一个和最后一个 x 轴标签未打印在此条形图上。如果表中的列数较少(例如 3),则会有更多的标签(但不是全部)。
任何关于如何让第一个和最后一个 x 轴标签与所有条形一起呈现的想法都将非常感谢。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\pgfplotstableread[row sep=\\,col sep=&]{
interval & IF & SW & CB & IFSWITCH & CUBESWITCH & IFCUBE & ALL \\
0--1.3 & 0 & 0 & 0 & 1 & 3401 & 0 & 120816 \\
1.3--1.5 & 2 & 0 & 0 & 3 & 15997 & 2614 & 20412 \\
1.5--1.57 & 7 & 0 & 0 & 1 & 7083 & 10 & 6080 \\
1.57--1.8 & 14 & 0 & 0 & 6 & 6428 & 625 & 9248 \\
1.8--2.0 & 8 & 1 & 5 & 8 & 4993 & 171 & 3358 \\
2.0--3.0 & 6 & 3 & 22 & 30 & 3302 & 164 & 1963 \\
3.0--4.0 & 1 & 0 & 32 & 3 & 675 & 17 & 115 \\
4.0--5.0 & 3 & 0 & 12 & 1 & 243 & 7 & 25 \\
5.0--10 & 5 & 0 & 55 & 5 & 366 & 7 & 31 \\
10--100 & 2 & 0 & 47 & 2 & 152 & 1 & 8 \\
100--600 & 0 & 0 & 3 & 0 & 2 & 0 & 0 \\
}\mydataOptimal
\begin{tikzpicture}
\begin{axis}[
ymode=log,
scaled y ticks = false,
xticklabel style={rotate=40,font=\small},
ymajorgrids = true,
ybar,
bar width=0.1cm,%<- changed
width=\textwidth,
height=.5\textwidth,
legend style={at={(0.56,1)},
anchor=north,legend columns=-1},
symbolic x coords={0--1.3, 1.3--1.5, 1.5--1.57, 1.57--1.8, 1.8--2.0, 2.0--3.0, 3.0--4.0, 4.0--5.0, 5.0--10, 10--100, 100--600},
xtick=data,
ymin=1,
ymax=180000,
ylabel={Count of Settings},
xlabel={$\mu$ seconds},
]
\addplot table[x=interval,y=IF]{\mydataOptimal};
\addplot table[x=interval,y=SW]{\mydataOptimal};
\addplot table[x=interval,y=CB]{\mydataOptimal};
\addplot table[x=interval,y=IFSWITCH]{\mydataOptimal};
\addplot table[x=interval,y=CUBESWITCH]{\mydataOptimal};
\addplot table[x=interval,y=IFCUBE]{\mydataOptimal};
\addplot table[x=interval,y=ALL]{\mydataOptimal};
\legend{If, Switch, Cube, If+Switch,Cube+Switch,If+Cube,All}
\end{axis}
\end{tikzpicture}
\end{document}
数据中存在的列较少的标签:
答案1
xtick=data
使得ticks
在有数据的地方第一的 \addplot
。对于对数 y 轴ymode=log
,您不能使用值0
。所有带有的条形图y=0
将从图中删除 - 请参阅对数。
您可以使用
xtick={0--1.3, 1.3--1.5, 1.5--1.57, 1.57--1.8, 1.8--2.0, 2.0--3.0, 3.0--4.0, 4.0--5.0, 5.0--10, 10--100, 100--600},
xticklabels={0--1.3, 1.3--1.5, 1.5--1.57, 1.57--1.8, 1.8--2.0, 2.0--3.0, 3.0--4.0, 4.0--5.0, 5.0--10, 10--100, 100--600},
代替xtick=data