我试图在以(0,0)为中心的圆形域中绘制函数$-log(x^2+y^2)$。使用添加绘图3我可以将其绘制在方形域$[-1,1]^2$上。

根据我在这里发现的pgfplots和ifthenelse,我可以选择在磁盘外部将值设置为0,但我不想绘制任何内容。

\文档类{article}\使用包{pgfplots}\pgfplotsset{compat=最新}\使用包{amsmath}\pgfmathdeclarefunction{ifthenelsefpu}{3}{%\pgfmathparse{#1*#2+!#1*#3}%}\开始{文档}\开始{tikzpicture}\开始{轴}\添加绘图3[冲浪,样本=60,域=1:1,y域=1:1,]({x},{y},}ifthenelsefpu({(x^2+y^2<=1)},-ln(sqrt(x^2+y^2)),0)});\结束{轴}\结束{tikzpicture}\结束{文档}

这是当前的结果在此处输入图像描述.

我们在磁盘的外部看到,绘图是平面的。

当我更换0通过在宏中伊芬内塞夫普,我知道错误包pgfplots:z缓冲区重新排序期间发生内部错误:行/列不平衡!我有行=60,列=60。如果出现错误,您可能希望手动提供行和列。。

我如何才能达到这个数字?

0

2个答案2

重置为默认值
6

我建议使用极坐标。这样,域是矩形的:

\文档类{文章}\使用包{pgfplots}\pgfplotsset{compat=最新}\使用包{amsmath}\pgfmathdeclarefunction{ifthenelsefpu}{3}{%\pgfmathparse{#1*#2+!#1*#3}%}\开始{文档}\开始{tikzpicture}\开始{轴}\添加绘图3[冲浪,样本=60,域=0.1:1,y域=-180:180,]({x*cos(y)},{x*sin(y){,{-ln(x)});\结束{轴}\结束{tikzpicture}\结束{文档}

结果是:在此处输入图像描述

4

我没有错误ifhenelsefpu({(x^2+y^2<=1)},-ln(sqrt(x^2+y^2)),nan)}。您还必须设置无界坐标=跳跃以避免绘制曲面时出现变形。

例子:

\文档类{article}\使用包{pgfplots}\pgfplotsset{compat=最新}\使用包{amsmath}\pgfmathdeclarefunction{ifthenelsefpu}{3}{%\pgfmathparse{#1*#2+!#1*#3}%}\开始{文档}\开始{tikzpicture}\开始{轴}\添加绘图3[冲浪,样本=60,域=1:1,y域=1:1,无界坐标=跳跃]({x},{y},{ifthenelsefpu({(x^2+y^2<=1)},-ln(sqrt(x^2+y^2)),nan)});\结束{轴}\结束{tikzpicture}\结束{文档}

例子

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.