问题:有没有办法使用參數參數(而不是绝对的x
和y
)里面mathparse
用来计算的颜色surf
?
动机:我要绘制的函数具有非常困难的逆,所以这不是一个选择。
代码示例: 代码
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={0}{90},domain=0:1,shader=interp,
mesh/color input=explicit mathparse]
\addplot3 [surf, point meta={symbolic={Hsb=x,y,1}}]
(x,y,1);
\end{axis}
\end{tikzpicture}
\end{document}
生产
而如果我绘制(x,y*.5+.5,1)
而不是(x,y,1)
,我会得到
我希望颜色取决于原始的x
和y
,而不是x
和y*.5+.5
。
希望有人能理解我的问题。提前谢谢大家!
答案1
原来\x
商店參數參數。据我所知,这没有记录。因此,这个技巧将来可能会失效。
我希望下面这个复杂的例子能证明我的观点:圆环的切点颜色不同。因此颜色不是其位置的函数。
\documentclass[border=9,tikz]{standalone}
\usepackage{pgfplots}\pgfplotsset{compat=1.14}
\begin{document}
\pgfmathdeclarefunction{X}{0}{%
\pgfmathparse{
y<121?
cos(x)*(3+cos(3*y))
:
(y<139?
inf
:
(y<261?
4+cos(x)*(3+cos(3*y))
:
(y<279?
inf
:
8+cos(x)*(3+cos(3*y))
)
)
)
}%
}
\pgfmathdeclarefunction{Y}{0}{%
\pgfmathparse{
y<121?
sin(x)*(3+cos(3*y))
:
(y<139?
inf
:
(y<261?
sin(3*y)
:
(y<279?
inf
:
sin(x)*(3+cos(3*y))
)
)
)
}%
}
\pgfmathdeclarefunction{Z}{0}{%
\pgfmathparse{
y<121?
sin(3*y)
:
(y<139?
inf
:
(y<261?
sin(x)*(3+cos(3*y))
:
(y<279?
inf
:
sin(3*y)
)
)
)
}%
}
\tikz[cap=round,join=round]{
\begin{axis}[axis equal,
%shader=interp,
mesh/color input=explicit mathparse]
\addplot3[surf,unbounded coords=jump,
domain =0:360,samples =27,
domain y=0:400,samples y=41,
z buffer=sort,
point meta={symbolic={Hsb=\x,.5+cos(3*\y)/3,1}}]
(X,Y,Z);
\end{axis}
}
示例取自https://tex.stackexchange.com/a/365790/51022。您的问题正是我在写那个答案时想问的。