在下面的例子中,x 轴的范围从 0 开始直到 10。现在,我想要一个 x 轴,其中刻度不像数字那样缩放。我的意思是我想要绘制数据,其中我有 4 个刻度,它们标有相应的索引(1、2、3、10),但间隙都相同。
\documentclass{minimal}
\usepackage{pgfplots}
% example data file
\usepackage{filecontents}
\begin{filecontents}{datafile.dat}
index value1 value2
1 1 2
2 2 3
3 3 4
10 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel=index,
ylabel=values,
]
\addplot table[x=index,y=value1] {datafile.dat};
\addplot table[x=index,y=value2] {datafile.dat};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
为了使刻度x-axis
具有相同的间隙,想到的方法是像这样改变数据:
\begin{filecontents}{datafile.dat}
index value1 value2
1 1 2
2 2 3
3 3 4
4 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
%axis equal,
xtick=\empty,
extra x ticks={1,2,3,4},
extra x tick labels={1,2,3,10},
xlabel=index,
ylabel=values,
]
\addplot table[x=index,y=value1] {datafile.dat};
\addplot table[x=index,y=value2] {datafile.dat};
\end{axis}
\end{tikzpicture}
因此情节将会是这样的:
请注意,我还在轴选项中添加了以下几行:
%axis equal,
xtick=\empty,
extra x ticks={1,2,3,4,5},
extra x tick labels={1,2,3,$\cdots$,10},
(您可以去掉%
符号来查看轴刻度发生的情况,然后决定使用哪个选项)。
这是一个替代解决方案(我更喜欢):
\begin{filecontents}{datafile.dat}
index value1 value2
1 1 2
2 2 3
3 3 4
5 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
axis equal,
xtick=\empty,
extra x ticks={1,2,3,4,5},
extra x tick labels={1,2,3,$\cdots$,10},
xlabel=index,
ylabel=values,
]
\addplot table[x=index,y=value1] {datafile.dat};
\addplot table[x=index,y=value2] {datafile.dat};
\end{axis}
\end{tikzpicture}
附言:建议在使用pgfplots
软件包时始终在序言中包含以下行
\pgfplotsset{compat=1.15}
答案2
您可以在轴选项中添加xtick=data
和。然后您可以在绘图选项中替换为,以获得xticklabels from table={datafile.dat}{index}
x=index
x expr=\coordindex
代码:
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}% current version is 1.15
% example data file
\usepackage{filecontents}
\begin{filecontents}{datafile.dat}
index value1 value2
1 1 2
2 2 3
3 3 4
10 4 5
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel=index,
ylabel=values,
xtick=data,% <- added
xticklabels from table={datafile.dat}{index}% <- added
]
\addplot table[x expr=\coordindex,y=value1] {datafile.dat};% <- changed
\addplot table[x expr=\coordindex,y=value2] {datafile.dat};% <- changed
\end{axis}
\end{tikzpicture}
\end{document}