Pgfplot:删除轴上的刻度元素

Pgfplot:删除轴上的刻度元素

我正在尝试使用 pgfplots 绘制图表。图表很好,我唯一担心的是我没有线性 x 轴:我有以下元素:1、2、4、5、7、8、9、10、12、13、14、15、20。这些是用于识别某些实验的 ID 号。

因此,当我绘制它们时,5 和 7 之间存在空格(绘图当然期望 6)或 15 和 20 之间。我希望 x 个刻度元素之间没有空格,如附图中突出显示的那样。

\documentclass{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{filecontents*}{data.csv}
n,c1,c2
1,0,64
2,98,93
4,0,8
5,88,98
7,91,19
9,97,97
10,84,99
12,30,94
13,95,91
14,95,97
15,83,91
20,99,99
\end{filecontents*}

\begin{document}

\begin{tikzpicture}

\begin{axis}[
width=\textwidth,
height=\axisdefaultheight,
xlabel={x label},
ylabel={y label},
xtick={1,2,4,5,7,8,9,10,12,13,14,15,20}
]

\addplot[thick, blue, mark=o] table[x=n, y=c1, col sep=comma] {data.csv};
\addplot[thick, green, mark=triangle] table[x=n, y=c2, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

图像

答案1

@Torbjørn T. :非常感谢!它起作用了……

我尝试了 csv 和 dat 格式;使用 csv 时会发生一些“奇怪”的事情:如果我写

xticklabels from table={data.csv}{n},

使用 csv 格式时出现错误:

包 pgfplots 错误:抱歉,无法从表“data.csv”中检索列“col sep comma, n”。

我解决了使用

代替

xticklabels from table={data.dat}{n},

当然,我使用 .dat 格式更改了我的代码

我提供了两种解决方案。

数据格式

\documentclass[border=2pt]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{filecontents*}{data.dat}
n c1 c2
1 0 64
2 98 93
4 0 8
5 88 98
7 91 19
9 97 97
10 84 99
12 30 94
13 95 91
14 95 97
15 83 91
20 99 99
\end{filecontents*}


\begin{document}

\begin{tikzpicture}

\begin{axis}[
enlarge x limits=0.01, % adjust space between axis edge and plot edge
xticklabels from table={data.dat}{n}, % use the x column from the file for ticklabels
xtick=data, % add a tick at every data point,
width=\textwidth,
height=\axisdefaultheight,
xlabel={x label},
ylabel={y label}%,
]

\addplot[thick, blue, mark=o] table[x expr=\coordindex, y=c1] {data.dat};
\addplot[thick, green, mark=triangle] table[x expr=\coordindex, y=c2] {data.dat};
\end{axis}
\end{tikzpicture}

\end{document}

csv 格式

\documentclass[border=2pt]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{filecontents*}{data.csv}
n,c1,c2
1,0,64
2,98,93
4,0,8
5,88,98
7,91,19
9,97,97
10,84,99
12,30,94
13,95,91
14,95,97
15,83,91
20,99,99
\end{filecontents*}


\begin{document}

\begin{tikzpicture}

\begin{axis}[
xticklabels from table={data.dat}{n}, % pay attention to .dat
xtick=data,
width=\textwidth,
height=\axisdefaultheight,
xlabel={x label},
ylabel={y label}
]

\addplot[thick, blue, mark=o] table[x expr=\coordindex, y=c1, col sep=comma] {data.csv};
\addplot[thick, green, mark=triangle] table[x expr=\coordindex, y=c2, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}

\end{document}

相关内容