我有一些非常简单的测量数据,我想在图表上将其可视化。
为了开始,我拿了一个例子。我在 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}