我正在制作点数据(仅标记)的 3D 散点图。我希望标记大小取决于表中的一个元数据列,标记颜色取决于另一个元数据列 - 我已经设法做到这一点,并且效果很好,使用visualization depends on
和scatter/@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}
;