Использовать нумерацию BPchem в качестве меток в PGFPlot

Использовать нумерацию BPchem в качестве меток в PGFPlot

Итак, я выдернул этот пример прямо из руководства на pgfplots, потому что он выглядит очень сложным. График — это именно то, что мне нужно, за исключением того, что вместо предоставленных им пользовательских меток я хочу иметь возможность вставлять составную нумерацию из BPChemв качестве меток, поэтому в качестве теста я сначала заменил ее symbolic x coordна свою собственную ссылку на номер. Излишне говорить, что это не работает :(

\documentclass[12pt, letterpaper]{article}
\usepackage{pgfplots}
\usepackage{bpchem}
\begin{document}

\CNlabelsubnoref{cmp1}{a}
\begin{tikzpicture}
    \begin{axis}[
        ybar,
        enlargelimits=0.15,
        legend style={at={(0.5,-0.2)},
        anchor=north,legend columns=-1},
        ylabel={\#participants},
        symbolic x coords={\CNrefsub{cmp1}{a},good,neutral,%
        not good,poor},
        xtick=data,
        nodes near coords,
        nodes near coords align={vertical},
        x tick label style={rotate=45,anchor=east},
        ]
        \addplot coordinates {(\CNrefsub{cmp1}{a},0) (good,8)
        (neutral,2) (not good,0) (poor,0)};
    \end{axis}
\end{tikzpicture}

\end{document}

Компиляция pdflatex никогда не заканчивается, но файл pdf содержит это...

pgfplots [ ybar, enlargelimits=0.15, legend style=at=(0.5,-0.2), anchor=north,legend columns=-1, ylabel=#participants, symbolic x coords=?? ,good,neutral,not good,poor,xtick=data, nodes near coords, nodes near coords align=vertical, x tick label style=rotate=45,anchor=east, ] координаты (?? ,0) (good,8) (neutral,2) (not good,0) (poor,0); 1

Если я останавливаю pdflatex, в консоли появляются следующие ошибки:

! Missing \endcsname inserted.
<to be read again>
\protect
l.20 ]
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
Missing character: There is no a in font nullfont!
! Extra \endcsname.
\pgfplotsarray@glob@TMP ...ts@loc@TMPa \endcsname
Process exited with error(s)

Есть ли шанс, что это можно как-то обойти?

решение1

Я бы предложил не использовать этот symbolic x coordsподход, а вместо этого использовать \coordindexв качестве координаты x и указать метки делений x с помощью xticklabels={\CNrefsub{cmp1}{a}, good, neutral, not good, bad}.

\documentclass[12pt, letterpaper]{article}
\usepackage{pgfplots}
\usepackage{bpchem}
\begin{document}

\CNlabelsubnoref{cmp1}{a}
\begin{tikzpicture}
    \begin{axis}[
        ybar,
        enlargelimits=0.15,
        legend style={at={(0.5,-0.2)},
        anchor=north,legend columns=-1},
        ylabel={\#participants},
        xtick=data,
        nodes near coords,
        nodes near coords align={vertical},
        x tick label style={rotate=45,anchor=east},
        xticklabels={\CNrefsub{cmp1}{a}, good, neutral, not good, bad}
        ]
        \addplot table [
            x expr=\coordindex, % Use the row number as x coordinate
            header=false    % Do not assume the first row to contain column names
        ] {
        cmp     0
        good    8
        neutral 2
        notgood 0
        bad     0
        };
    \end{axis}
\end{tikzpicture}

\end{document}

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