获取 pgfplot 自动生成的刻度距离(DIN 461)

获取 pgfplot 自动生成的刻度距离(DIN 461)

我想设置我的 pgfplots 以符合德国标准“DIN 461”。简而言之:我们被要求将轴的单位放在最后一个和倒数第二个刻度标签之间,或者在空间不足的情况下替换倒数第二个刻度标签。

到目前为止我所学到的是,我可以通过为每个刻度标签设置一个别名来引用最后一个刻度标签(在 pgfplots 中放置刻度刻度标签)。似乎不太容易实现的是获取倒数第二个刻度标签的位置。

或者,我希望获得实际的刻度距离,这样就可以基于最后一个刻度标签的位置重新计算倒数第二个刻度标签的位置。当然,我可以tick distance手动设置,从而知道距离,但我希望尽可能保持其灵活性(例如,以较少的努力使其可扩展,特别是如果我使用max space between ticksmin space between ticks)。

总结一下我的问题:

  1. 是否有可能直接获取倒数第二个刻度标签的位置
  2. 是否有其他可能来获取自动生成的刻度距离

在此先非常感谢您的帮助!

答案1

您可以为刻度标签赋予编号名称,然后可以使用该名称将标签定位在最后两个标签中间。

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\usepackage{siunitx}

\pgfplotsset{
    din xlabel/.style={
        xticklabel style={
            name=label\ticknum,
            append after command=\pgfextra{\xdef\lastticknum{\ticknum}}
        },
        after end axis/.code={
            \pgfmathparse{int(\lastticknum-1)}
            \path (label\lastticknum.base) -- (label\pgfmathresult.base) node [midway, anchor=base] {#1};
        }
    }
}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[din xlabel=\si{\celsius}]
      \addplot table {
      0 1
      2 1
      3 2
      4 3
      };
    \end{axis}
  \end{tikzpicture}
\end{document}

相关内容