具有恒定位置的 pgfplot x 轴

具有恒定位置的 pgfplot x 轴

我有一些非常简单的测量数据,我想在图表上将其可视化。

为了开始,我拿了一个例子。我在 x 轴上有一些测量值,顺序为 1、4、16、64、256、1024,我希望它们在同一个 x 轴上,彼此之间的距离相同

我现在的乳胶看起来像这样:

\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

% We will externalize the figures
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}


\begin{tikzpicture}
\begin{axis}[
    title={Mah depending on DHRP interval},
    xlabel={DHRP interval},
    ylabel={Mah over five hours},
    xmin=0, xmax=1024,
    ymin=400, ymax=700,
    xtick={1,4,16,64,256,1024},
    ytick={400,450,500,550,600,650,700},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed,
]

\addplot[
    color=blue,
    mark=square,
    ]
    coordinates {
    (1,500)(4,520)(16,540)(64,550)(256,560)(1024,670)
    };

\end{axis}
\end{tikzpicture}

\end{document}

这给出了以下图表:

在此处输入图片描述

这里的问题是,x 轴上的每个点都根据其数值扩展到其相对位置。

有什么方法可以让我将它们置于“绝对”位置,以便它们的值不会决定它们位于线上的哪个位置?

答案1

您可以使用symbolic x coords来解决您的问题。

\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.18}

% SI units: celsius and gram
\usepackage{siunitx}

% externalize figures
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    title={?},
    xlabel={Temperature [\unit{\celsius}]},
    ylabel={Solubility [\unit{\gram} per \SI{100}{\gram} water]},
    symbolic x coords={1,4,16,64,256,1024},% <- set correct x ticks
    ymin=400, ymax=700,
    ytick={400,450,500,550,600,650,700},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed
]

\addplot[mark=square]
    coordinates {
        (1,500)
        (4,520)
        (16,540)
        (64,550)
        (256,560)
        (1024,670)
    };
\addlegendentry{CuSO\textsubscript{4}$\cdot$5H\textsubscript{2}O};
\end{axis}
\end{tikzpicture}
\end{document}

输出

相关内容