我想用任意颜色给冲浪板上色RGB颜色(不同于这个问题,它只是使用颜色图为冲浪着色)。
在这个最小的例子(绘制函数x+y
)中,我希望每个补丁的颜色都是red=x, green=y, blue=x*y
例如。
如果我还可以设置不透明度的话,我会获得加分:)
。
我认为这可以使用point meta=explicit symbolic
或来完成point meta=Tex code symbolic
,但我不知道之后如何使用元数据。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usepgfplotslibrary{patchplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot3[surf] { x + y };
\end{axis}
\end{tikzpicture}
\end{document}
答案1
Pgfplots 1.7 版及之前版本仅支持通过颜色图来显示颜色。
编辑此限制适用于网格/表面图,特殊散点图可能会起作用。
您是第二个请求此功能的用户。我接受该功能请求。
很高兴知道您希望根据参数 x 和 y 来表达 RGB 分量。我想有人还想使用 xcolor 语法提供颜色,因此颜色格式应该足够灵活以支持两者。
编辑:Georges Dupéron
对于那些迫不及待想要尝试的人,你可以看看 Christian 的 pgfplots 的(可能是最前沿的)版本:
# Create a temporary working directory.
workdir="/tmp/$(date +%s)"
mkdir "$workdir"
# Download the latest (as of 2013-02-13) unstable version of PGF
mkdir "$workdir/pgf"
cd "$workdir/pgf";
wget http://www.texample.net/media/pgf/builds/pgfCVS2012-11-04_TDS.tgz -O- | tar zxvf -
# Download the latest version of pgfplots
cd "$workdir"
git clone git://pgfplots.git.sourceforge.net/gitroot/pgfplots/pgfplots
# Tell LaTeX to use these versions
export TEXINPUTS="$workdir/pgf/tex//:$workdir/pgfplots//:"
cd "$workdir/pgfplots"
# Add a dummy tag so we can run pgfplotsrevisionfile.sh, which is required to use pgfplots
git tag 1.7.42
./scripts/pgfplots/pgfplotsrevisionfile.sh
# Compile a small example that plots x*y with red=x, green=y and blue=0
pdflatex source/latex/pgfplots/pgfplotstest/unittests/unittest_shader_interp_explicitcolor_math.tex
# View the resulting PDF
evince unittest_shader_interp_explicitcolor_math.pdf
结果(x*y
用绘制mesh/color input=explicit mathparse, point meta/symbolic={x,y,0}
):
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
%\tracingmacros=2 \tracingcommands=2
\begin{axis}
\addplot3[
patch,
patch type=bilinear,
shader=interp,
mesh/color input=explicit mathparse,
domain=0:1,
samples=5,
point meta/symbolic={x,y,0}
]
{x*y};
\end{axis}
\end{tikzpicture}
\end{document}
另一个例子(在使用相同颜色绘图后,sin(deg(x*pi*2))+sin(deg(y*pi*2))
使用 绘图):mesh/color input=explicit mathparse, point meta/symbolic={(sin(deg(x*pi*2))+1)/2,(sin(deg(y*pi*2))+1)/2,0}
-3
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
%\tracingmacros=2 \tracingcommands=2
\begin{axis}
\addplot3[
patch,
patch type=bilinear,
shader=faceted interp,
mesh/color input=explicit mathparse,
domain=0:1,
samples=30,
point meta/symbolic={(sin(deg(x*pi*2))+1)/2,(sin(deg(y*pi*2))+1)/2,0}
]
{-3};
\addplot3[
patch,
patch type=bilinear,
shader=faceted interp,
mesh/color input=explicit mathparse,
domain=0:1,
samples=30,
point meta/symbolic={(sin(deg(x*pi*2))+1)/2,(sin(deg(y*pi*2))+1)/2,0}
]
{sin(deg(x*pi*2))+sin(deg(y*pi*2))};
\end{axis}
\end{tikzpicture}
\end{document}