我画了下面的图
使用此代码:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
a,b
2019-05,64
2019-06,66
2019-07,59
2019-08,56
2019-09,64
2019-10,55
2019-11,57
2019-12,51
2020-01,50
2020-02,54
2020-03,51
2020-04,53
2020-05,49
2020-06,49
2020-07,52
2020-08,52
2020-09,48
2020-10,38
2020-11,37
2020-12,36
2021-01,32
2021-02,33
2021-03,37
2021-04,43
2021-05,37
2021-06,34
2021-07,39
2021-08,36
2021-09,36
2021-10,34
2021-11,42
2021-12,38
2022-01,40
\end{filecontents*}
\begin{document}
\pgfplotsset{width=\textwidth, compat=1.18}
\pgfplotstableread[col sep=comma,]{data.csv}\datatable
\begin{tikzpicture}
\begin{axis}[
xtick=data,
xticklabels from table={\datatable}{a},
x tick label style = {font=\small, align=center, rotate=70, anchor=north east},
]
\addplot table [x=a, y=b, col sep=comma, x expr=\coordindex]{\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
我不希望 x 轴太拥挤。如果我能以某种方式只为每 5 个数据点绘制一个标签就好了。这可能吗?
答案1
由于数据是分类的,因此无法以xtick distance
正常方式指定。以下代码首先从表中捕获行数,然后xtick
根据所需的间隔设置。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
a,b
2019-05,64
2019-06,66
2019-07,59
2019-08,56
2019-09,64
2019-10,55
2019-11,57
2019-12,51
2020-01,50
2020-02,54
2020-03,51
2020-04,53
2020-05,49
2020-06,49
2020-07,52
2020-08,52
2020-09,48
2020-10,38
2020-11,37
2020-12,36
2021-01,32
2021-02,33
2021-03,37
2021-04,43
2021-05,37
2021-06,34
2021-07,39
2021-08,36
2021-09,36
2021-10,34
2021-11,42
2021-12,38
2022-01,40
\end{filecontents*}
\begin{document}
%\pgfplotsset{width=\textwidth, compat=1.18}
\pgfplotstableread[col sep=comma,]{data.csv}\datatable
\begin{tikzpicture}
\pgfplotstablegetrowsof{\datatable}
\pgfmathsetmacro\numrows{\pgfplotsretval}
\begin{axis}[
xtick={0,5,...,\numexpr\numrows-1},
xticklabels from table={\datatable}{a},
x tick label style = {font=\small, align=center, rotate=70, anchor=north east},
]
\addplot table [x=a, y=b, col sep=comma, x expr=\coordindex]{\datatable};
\end{axis}
\end{tikzpicture}
\end{document}