pgfplots 轴缩写

pgfplots 轴缩写

假设我有一个带有以下轴文本的 pgfplot:

|-----|-----|-----|------|
0    500  1000  1500  2000

有没有办法将轴文本更改为:

|-----|-----|-----|------|
0    0.5K  1K   1.5K    2K

答案1

有两种可能的方法:

  1. 你可以使用以下方式即时转换数据

    x coord trafo/.code={\pgfmathparse{\pgfmathresult/1000}}
    

    并使用以下方式格式化标签

    xticklabel = \pgfmathprintnumber{\tick}\,K
    
  2. 您只需使用

    xticklabel = {
        \pgfmathparse{\tick/1000}
        \pgfmathprintnumber{\pgfmathresult}\,K
    }
    

在这种情况下,结果是相同的,但两种解决方案的行为略有不同。使用第一种方法,您必须使用转换后的单位指定轴限制(例如,xmax=1.5而不是xmax=1500)。但是,该解决方案的优点是它还可以处理不如那么“好”的因子1000。考虑您想要从字节转换为千字节的情况,这是 1024 的因子。如果您使用第二种解决方案,刻度标记将放置在0.488 Ki0.977 Ki等处,而第一种解决方案将标签放置在0.5 Ki1 Ki等处。

第一个解决方案:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    domain = 0:2000,
    x coord trafo/.code={\pgfmathparse{\pgfmathresult/1000}},
    xticklabel = \pgfmathprintnumber{\tick}\,K
]
\addplot {rnd};
\end{axis}
\end{tikzpicture}

\end{document}

第二种解决方案:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    domain = 0:2000,
    xticklabel = {
        \pgfmathparse{\tick/1000}
        \pgfmathprintnumber{\pgfmathresult}\,K
    }
]
\addplot {rnd};
\end{axis}
\end{tikzpicture}

\end{document}

答案2

除了执行 Jake 的解决方案之外,您还可以使用 SI 前缀,包括 x 轴单位内的前缀。

代码

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{units}
\begin{document}
    %Without prefix
    \begin{tikzpicture}
        \begin{axis}[change x base,
            x unit=m,
            y unit=N,
            xlabel=Distance,ylabel=Force]
            \addplot coordinates {
            (1000,1)
            (2000,1.1)
            (3000,1.2)
            (4000,1.3)
            };
        \end{axis}
    \end{tikzpicture}
    
    %With prefix
    \begin{tikzpicture}
        \begin{axis}[change x base,
            x SI prefix=kilo,x unit=m,
            y SI prefix=milli,y unit=N,
            xlabel=Distance,ylabel=Force]
            \addplot coordinates {
            (1000,1)
            (2000,1.1)
            (3000,1.2)
            (4000,1.3)
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

输出

在此处输入图片描述

来自第 5.14 节,第 527 页pgf图手动的。

相关内容