拉直锯齿状轮廓填充的pgfplot

拉直锯齿状轮廓填充的pgfplot

我正在使用 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}

二维填充轮廓图

相关内容