Как поместить x-координаты точек в виде дополнительных x-отметок?

Как поместить x-координаты точек в виде дополнительных x-отметок?

Мне нужно указать 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}

Связанный контент