
Мне нужно указать x-координаты точек в виде дополнительных x-отметок, но общепринятый способ нерационален, поскольку точек может быть много, и дублировать их будет extra x ticks
неэффективно.
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\begin{document}
%---------------------------------------------------------
\begin{tikzpicture}[
]
\begin{axis}[
width=\linewidth, axis lines = middle,
extra x ticks = {1.1, 2.2,3.3}, % irrational decision, because there can be many points
xtick=data,
]
\addplot[] {x};
\addplot[color=red,mark=*, only marks] coordinates {
(1.1,1)
(2.2,2)
(3.3,3)
};
\end{axis}
\end{tikzpicture}
%---------------------------------------------------------
\end{document}
решение1
Если ты это сделаешь
xtick=data, % data points from first \addplot
extra x ticks={-4,...,4} % regularly spaced ticks
вы получите отметки для каждой точки в первом \addplot
, и отметки с регулярным интервалом в дополнение. Это может быть немного запутанно. Один из способов разделить их — сместить отметки координат вниз, т.е.
xticklabel style={yshift=-15pt},
extra x tick style={tick label style={yshift=15pt}}
Вторая строка необходима, поскольку первая также влияет на дополнительные метки.
Для nodes near coords
, добавление point meta=x,nodes near coords
в опции \addplot
добавит значения x рядом с точками на этом графике. Код ниже демонстрирует оба этих варианта.
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\begin{document}
%---------------------------------------------------------
\begin{tikzpicture}[
]
\begin{axis}[
width=\linewidth,
axis lines = middle,
xtick=data, % data points from first \addplot
extra x ticks={-4,...,4}, % regularly spaced ticks
xticklabel style={yshift=-15pt},
extra x tick style={tick label style={yshift=15pt}}
]
\addplot[color=red,mark=*,
only marks,
point meta=x, % use x-value for nodes near coords
nodes near coords
] coordinates {
(1.1,1)
(2.2,2)
(3.3,3)
};
\addplot[] {x};
\end{axis}
\end{tikzpicture}
%---------------------------------------------------------
\end{document}