重新调整刻度

重新调整刻度

我已经根据表格 (xy 数据) 创建了一个简单的 2D 图,现在我想平移和缩放 x 轴。 (我宁愿不缩放实际数据,只缩放轴)。

举个例子,假设 x 值介于 (a,b) 之间,而我现在想让它们介于 (0,1) 之间。我该怎么做?我找到了一个关于如何减去常数的示例,但我无法让它与乘法一起使用。任何帮助都将不胜感激。

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
\begin{axis}[scaled x ticks=manual:{}{% 
\pgfmathfloatcreate{1}{6.0}{0}%
\pgfmathfloatsubtract{#1}{\pgfmathresult}%
}] 
\addplot coordinates {
(6, 2)
(8, 3)
};
\end{axis} 
\end{tikzpicture}

\end{document}

答案1

您可以使用 ,在一个命令中执行减法和除法scaled x ticks=manual:{}{\pgfmathparse{ (#1 - 6) / 2 } }

如果你想让它更舒服一点,你可以使用以下方式定义一种新风格

\pgfplotsset{
    normalise/.style 2 args={
        scaled x ticks=manual:{}{% 
            \pgfmathparse{ ( ##1 - (#1) ) / (#2 - #1) }%
        }
    }
}

然后您可以调用normalise={<lower>}{<upper>}选项axis来使刻度标准化。

请注意,这只会缩放每个刻度标签,这意味着您最终可能会得到不雅的刻度位置(尝试在 6 到 9 之间进行标准化)。

我建议对坐标本身进行规范化。您可以使用 而不是x filter/.code来执行此scaled x ticks操作。这将改变坐标本身,而不仅仅是刻度标签。这意味着确定要显示哪些刻度位置的算法可以与缩放坐标一起使用,这通常会产生更好的结果:

\documentclass{article}

\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}

\pgfplotsset{
    normalise/.style 2 args={
        x filter/.code={% 
            \pgfmathparse{ ( ##1 - (#1) ) / (#2 - #1) }%
        }
    }
}

\begin{axis}[
    normalise={6}{9}
] 
\addplot coordinates {
    (6, 2)
    (8, 3)
    (9,1)
};
\end{axis} 
\end{tikzpicture}

\end{document}

为了进行比较,以下是您使用时获得的输出scaled x ticks。请注意,有 7 个刻度标签,而不是 6 个:

答案2

我认为规范化相当容易,但你可以手动设置和命名刻度,例如从A,[A]:

\begin{axis}[xtick={a,b,c,d,e},
             xticklabels={0, 0.25, 0.5, 0.75, 1},
            ]

相关内容