如何根据点元类专门化标记样式?

如何根据点元类专门化标记样式?

情况与问题

这个问题是一个后续问题,基于 marmots 的回答这个问题。那里描述了一般情况。我修改了标记,如下所示这个答案,但不能使它们依赖于class-column。

问题

如何marker option改变scatter/classes-class

我尝试了一些变化,例如移动mark options类部分内的所有内容,结果只剩下“p”而不是其他字母(或数字)。 似乎相关,但我不知道如何进行映射。

例如,在这个例子中,a 和 b 应该出现在一个方框中,而 c、d 应该出现在一个三角形中。但是,设置circle不会被覆盖。

MWE
\documentclass[tikz,border=3mm]{standalone}

\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15} 
\usepgfplotslibrary{polar}

\usepackage{filecontents}
\begin{filecontents*}{radar.csv}
    angle,radius,class,name
    130,    4,  1,  a
    348,    3,  1,  b
    212,    5,  2,  c
    56,     2,  2,  d
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
    \begin{polaraxis}[
        width=8cm, height=8cm,
        visualization depends on={value \thisrow{name} \as \labelname}
        ]
        \addplot[
            scatter, only marks,
            point meta=explicit symbolic,
            mark options={
                text mark=\labelname,
                text mark as node=true,
                text mark style={circle,inner sep=1pt,draw}
            },
            scatter/classes={
                1={
                    mark = text,
                    mark options={
                        text mark style={square,inner sep=2pt,draw}
                        },
                    blue
                    },
                2={
                    mark = text,
                    mark options={
                        text mark style={*triangle}
                        },
                    red
                    }
                }
            ]
            table[ x=angle, y=radius, meta=class, col sep=comma
            ] {radar.csv};
    \end{polaraxis}
\end{tikzpicture}
\end{document}

答案1

我可以提供以下内容,我在其中查找了一些内容这个答案

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15} 
\usepgfplotslibrary{polar}

\usepackage{filecontents}
\begin{filecontents*}{radar.csv}
    angle,radius,class,name
    130,    4,  1,  a
    348,    3,  1,  b
    212,    5,  2,  c
    56,     2,  2,  d
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
    \begin{polaraxis}[
        width=8cm, height=8cm,
        visualization depends on={value \thisrow{name} \as \labelname}
        ]
        \addplot[scatter/classes={
                1={mark=text,text mark=\labelname,blue,text mark as node=true,
                         text mark style={rectangle,inner sep=2pt,draw}
                         },
                2={mark=text,text mark=\labelname,red,text mark as node=true,
                         text mark style={circle,inner sep=2pt,draw}}
                },
                scatter,draw=none,
                scatter src=explicit symbolic]
         table[x=angle, y=radius, meta=class, col sep=comma]
            {radar.csv};
    \end{polaraxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

但是,我不确定我text mark style={square,...}是否理解text mark style={*triangle},但这可能只是我的看法。

相关内容