我正在使用 pgfplots 绘制分段平面的轮廓填充图。空间的某些区域是完美的直线,而其他区域(左上角)则呈现出锯齿状边缘。我认为这与轮廓网格(或面片?我无法完全弄清楚两者的区别)的形成方式有关,但我不知道如何改变它以产生所需的均匀性(即像中间和右侧区域那样的直线)。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\begin{document}
\begin{tikzpicture}[baseline,
declare function={ReLU2(\x,\y,\theta)=max(0, cos(deg(\theta))*x + sin(deg(\theta))*y - 1/3) + max(0, -cos(deg(\theta))*x + sin(deg(\theta))*y - 1/3);},%
]
\begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1,
xlabel=$x_1$,
ylabel=$x_2$,
view = {0}{90},
colormap/viridis,
]
\addplot3 [domain=-1:1,
domain y = -1:1,
samples = 50,
samples y = 50,
contour filled = {number=10}
] {ReLU2(x,y,pi/4)};
\end{axis}
\end{tikzpicture}
\end{document}
我也尝试过使用该\pgfplotsset{contour/handler/.style={/tikz/smooth}}
命令,但没有成功。
非常感谢您的帮助!
答案1
这个图片:
是由您未修改的原始代码制作而成。首先,它被编译为 .pfd,然后为了制作图像,我使用:
convert -density 500 FilledContour.pdf -resize 500 FilledContour.png
convert
来自 ImageMagick:https://imagemagick.org
答案2
这取决于查看器。-手册对此发出了警告。手册中的所有示例contour filled
在 Mac 预览中对我来说都很糟糕。您可以重复您的情节并仅显示“好的”一面:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\begin{document}
\begin{tikzpicture}[baseline,
declare function={ReLU2(\x,\y,\theta)=max(0, cos(deg(\theta))*x + sin(deg(\theta))*y - 1/3) + max(0, -cos(deg(\theta))*x + sin(deg(\theta))*y - 1/3);},%
]
\begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1,
xlabel=$x_1$,
ylabel=$x_2$,
view = {0}{90},
colormap/viridis,
]
\addplot3 [domain=1:-1,
domain y = -1:1,
samples = 50,
samples y = 50,
contour filled = {number=10},
] {ReLU2(x,y,pi/4)};
\clip (0,-1) rectangle (1,1);
\addplot3 [domain=-1:1,
domain y = -1:1,
samples = 50,
samples y = 50,
contour filled = {number=10},
] {ReLU2(x,y,pi/4)};
\end{axis}
\end{tikzpicture}
\end{document}