分组条形图缺失或 xlabel 偏移

分组条形图缺失或 xlabel 偏移

您好,我的条形图缺少值 141 的 x 标签,而 117 的标签似乎向右移动。

有人知道如何解决这个问题吗?提前谢谢!

在此处输入图片描述

最小示例:

\documentclass[12pt]{article}
\usepackage{float}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}

\pgfplotstableread[col sep=semicolon]{
Size;MinCount;MaxCount
82;2;1
84;1352;1135
88;1;1
89;18;18
90;1689;1448
95;1;1
96;4;4
105;2;2
106;1;1
108;46;41
110;2;2
113;1;1
115;1;1
116;14;18
117;0;1096
126;1;1
129;1;1
140;1;0
141;1313;0
}\realtable

\begin{document}

\begin{figure}[H]
\centering
\scalebox{0.5}{
\pgfplotsset{compat=newest}
%\pgfplotstableread[col sep=semicolon]{Messwerte/ChargingIO.csv}\datatable
\begin{tikzpicture}
\begin{axis}[
    ybar = 0pt, 
    bar width = 10pt,
    x = 5ex,
    xtick = data,
    xticklabels from table = {\realtable}{Size},
    enlarge x limits = {abs = 1},
    ylabel={Allokationen},
        ymode = log,
        ymajorgrids = true,
        major grid style = {very thick},
        yminorgrids = true,
        minor grid style = {dashed, thick}, 
    ]
    \addplot table [x expr = \coordindex, y = {MinCount}]{\realtable};
    \addplot table [x expr = \coordindex, y = {MaxCount}]{\realtable};
\end{axis}
\end{tikzpicture}
}
\caption[...]{}
\label{dia:..}
\end{figure}

\end{document}

答案1

这是一个基于的解决方案mdd 在此处描述的方法

这个想法是存储列表xitcklabels并手动排版它们,以避免被自动丢弃pgfplots。除了mdd的答案之外,这里还必须xtick手动定义,就像您table[x expr=\coordindex]在图中使用的一样。

\documentclass[margin=3mm,tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}

\pgfplotstableread[col sep=semicolon]{
Size;MinCount;MaxCount
82;2;1
84;1352;1135
88;1;1
89;18;18
90;1689;1448
95;1;1
96;4;4
105;2;2
106;1;1
108;46;41
110;2;2
113;1;1
115;1;1
116;14;18
117;0;1096
126;1;1
129;1;1
140;1;0
141;1313;0
}\realtable

\pgfplotstablegetcolumn{Size}\of\realtable\to\listnames % store column with names into \listnames
\pgfplotstablegetrowsof{\realtable}
\pgfmathtruncatemacro{\rowmax}{\pgfplotsretval-1}

\begin{document}


\begin{tikzpicture}
\begin{axis}[
    ybar = 0pt, 
    bar width = 10pt,
    x = 5ex,
    xtick = {0,...,\rowmax},
    xticklabel={
        \pgfmathparse{int(\ticknum)}
        \pgfplotslistselect\pgfmathresult\of\listnames\to\tempxticklabel
        \tempxticklabel},
    enlarge x limits = {abs = 1},
    ylabel={Allokationen},
        ymode = log,
        ymajorgrids = true,
        major grid style = {very thick},
        yminorgrids = true,
        minor grid style = {dashed, thick}, 
    ]
    \addplot table [x expr = \coordindex, y = {MinCount}]{\realtable};
    \addplot table [x expr = \coordindex, y = {MaxCount}]{\realtable};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容