条形图无法添加第一个和最后一个 x 轴标签

条形图无法添加第一个和最后一个 x 轴标签

由于某种原因,第一个和最后一个 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

相关内容