![使用参数坐标计算网格的颜色](https://linux22.com/image/357131/%E4%BD%BF%E7%94%A8%E5%8F%82%E6%95%B0%E5%9D%90%E6%A0%87%E8%AE%A1%E7%AE%97%E7%BD%91%E6%A0%BC%E7%9A%84%E9%A2%9C%E8%89%B2.png)
问题:有没有办法使用參數參數(而不是绝对的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。您的问题正是我在写那个答案时想问的。