Повторное использование стиля серии в PGFplots

Повторное использование стиля серии в PGFplots

В моем документе много графиков PGF, имеющих единый стиль и управляемых с помощью общего списка циклов.

Теперь я хотел бы повторно использовать предыдущий стиль графика в том же PGFplot.

В качестве примера я хочу сказать, что третий график должен использовать тот же стиль, что и первый график, но не уточняя, какой это стиль (поскольку он будет указан в другом месте списка циклов).

введите описание изображения здесь

(Извините за некрасивую обрезку правой части изображения :P)

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

%and define new styles like this:
% \pgfplotsset{
%    ...
%}

\begin{document}
\begin{tikzpicture}
   \begin{axis}[ylabel=y,
    xlabel=x,]
        \addplot
        coordinates
        {
            (0,10)
            (10,0)
        };
        \addlegendentry{Descending}

        \addplot
        coordinates
        {
            (0,3)
            (10,5)
        }; 
        \addlegendentry{Ascending}

        \addplot
        coordinates
        {
            (0,7)
            (10,5)
        };
        % Reuse descending style
    \end{axis}     
\end{tikzpicture}
\end{document}

Мне бы хотелось, чтобы третий коричневый график имел тот же стиль, что и первый синий график, но без ручного указания деталей стиля, таких как blue, mark=oи т. д. Можно ли это сделать напрямую?

Если это невозможно, могу ли я загрузить первый стиль в списке активных циклов для третьего графика?

решение1

pgfplotsпоставляется с механизмом \label/ \refдля маркировки графиков и ссылки на их стиль где-то еще. Хотя этот механизм предназначен для генерации легенд где-то внутри текста, можно также получить доступ к опциям стиля маркированного графика с помощью ключа refstyle:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

%and define new styles like this:
% \pgfplotsset{
%    ...
%}

\begin{document}
\begin{tikzpicture}
   \begin{axis}[ylabel=y,
    xlabel=x,]
        \addplot
        coordinates
        {
            (0,10)
            (10,0)
        };
        \addlegendentry{Descending}
        \label{plot:1}

        \addplot
        coordinates
        {
            (0,3)
            (10,5)
        }; 
        \addlegendentry{Ascending}

        \addplot[refstyle={plot:1}]
        coordinates
        {
            (0,7)
            (10,5)
        };
        % Reuse descending style
    \end{axis}     
\end{tikzpicture}
\end{document}

введите описание изображения здесь

Обратите внимание, что для этого требуется две компиляции документа. Подробности этого \labelмеханизма \refможно найти в разделе «Легенды с меткой и ссылкой» в руководстве.

решение2

Если это невозможно, могу ли я загрузить первый стиль в списке активных циклов для третьего графика?

Вы можете использовать

\pgfplotsset{cycle list shift=-2}

для смещения счетчика списка циклов назад или вперед, где мы можем добиться того, что нам нужно, добавив указанную выше команду перед третьим графиком.

Обратите внимание, что это не суммируется... поэтому, если вы хотите, чтобы четвертый график был восходящим, вам нужно будет добавить:

\pgfplotsset{cycle list shift=-2}

снова.

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