指定标记颜色来自@pre 标记代码中的颜色图

指定标记颜色来自@pre 标记代码中的颜色图

我正在制作点数据(仅标记)的 3D 散点图。我希望​​标记大小取决于表中的一个元数据列,标记颜色取决于另一个元数据列 - 我已经设法做到这一点,并且效果很好,使用visualization depends onscatter/@pre marker code/.append style

我现在想让标记类型取决于元值之一,这样如果元值为 0,则标记类型为 A,否则标记类型为 B。我在 pgfplots 手册(2015/01/31 版第 111 页)中找到了如何执行此操作。此方法使用,scatter/@pre marker code/.code它会覆盖所有常规标记样式。我设法将我拥有的标记大小命令放入scatter/@pre marker code/.append style此命令中,因此大小映射正确,但仍然需要将颜色映射到颜色图,就像我最初为标记类型 B 所做的那样。

fill={take from colormap}我想我正在寻找的是在以下上下文中说的命令:

\def\markopts{fill={take from colormap}}

我的整个 addplot 命令最初看起来像这样(没有标记样式评估):

\addplot3[scatter,mark=cube*,only marks,scatter src=explicit,z buffer=sort,
    visualization depends on=\thisrow{m}\as\wtwo,
    scatter/@pre marker code/.append style={%
        /tikz/mark size=0.01+\wtwo/3000,
    }
]
table[x=x,y=y,z=z,meta=density]{Plots/datafilename.txt}
;

对于包含标记类型选择的版本,我得到了以下内容:

\addplot3[scatter,mark=cube*,only marks,scatter src=explicit,z buffer=sort,
    visualization depends on=\thisrow{m}\as\wtwo,
    scatter/@pre marker code/.code={%
        \ifdim\wtwo pt<300pt
            \def\markopts{mark=+,mark size=1pt}%
        \else
            \def\markopts{mark=cube*,mark size=0.01+\wtwo/3000}%
        \fi
        \expandafter\scope\expandafter[\markopts]
    },%
    scatter/@post marker code/.code={%
        \endscope
    },%
]
table[x=x,y=y,z=z,meta=density]{Plots/datafilename.txt}
;

相关内容