如果您未将samples
和isosamples
都设置为适当的值,则gnuplot生成的轮廓线可能看起来很奇怪(意外)。我费了好几个小时才能弄清楚set samples
和set isosamples
对轮廓线外观的影响,但是,我观察到的是将两者都设置为足够大的值会产生美观的轮廓。不过,我想了解这是如何工作的。
set samples
和set isosamples
有什么区别?set samples
如何影响轮廓线的生成?set isosamples
如何影响轮廓线的生成?例如,考虑以下简单情况:
unset surface
set contour
set cntrparam levels discrete 10, 20
set samples 250, 2
set isosamples 2, 250
set view map
splot x**2 + y**2
要生成正确的轮廓线,您似乎需要将samples
的第一个参数和isosamples
的第二个参数设置为足够大的值。但是,将samples
的第二个参数和isosamples
的第一个参数设置为尽可能小的值不会有任何危害。这不是完全直观的。那么这是如何工作的?
答案 0 :(得分:2)
首先,讨论samples
和isosamples
的设计用途。当查看实际图而不是等高线图时,这是最好的。
samples
用于设置要绘制的范围内沿轴的功能求值数。对于splot
(3-D图像),您可以在独立的x和y方向上控制样本。这是一个示例,其中x方向只有4个评估,y方向有200个评估:
reset
set xrange [-10:10]
set yrange [-10:10]
set xlabel 'X'
set ylabel 'Y'
set samples 4,200
splot x**2+y**2
在下面的两幅图像中,请注意沿x方向,该函数仅计算4次,并且在它们之间绘制了直线。沿y方向,它被评估了200次,看起来像“平滑”曲线。请注意,在两个方向上均精确绘制了10条线。在讨论等值线时,我将在下面进行介绍。
因此,由于在x和y方向上等值线的默认值为10,因此在每个轴方向上绘制了10条线。我们可以随意更改。让我们在两个方向上都增加样本以获得平滑的曲线,但演示等值样本。
reset
set xrange [-10:10]
set yrange [-10:10]
set xlabel 'X'
set ylabel 'Y'
set samples 200,200
set isosamples 4,12
splot x**2+y**2
请注意两个方向上的平滑曲线。沿x轴,只有4个点沿y轴绘制表面曲线,沿y轴有12个点平行于x轴绘制表面曲线。
以上示例说明了set samples
和set isosamples
的主要目的。它们仅间接影响轮廓。在您的情况下,您只对轮廓图感兴趣,甚至不显示曲面图。关于gnuplot如何绘制轮廓的一个线索是它解释了如何使用谨慎的数据绘制轮廓。
格罗玛克斯:
为了绘制轮廓,数据应组织为“网格数据”。在 这样的文件会列出单个y等值线的所有点,然后 指向下一个y等值线,依此类推。单个空白行(一行 除空格,回车符和/或其他字符外,不包含其他任何字符 换行符),将一个y-isoline与下一个y-isoline分开。
根据这种解释,gnuplot似乎更喜欢选择x值并绘制y等值线。然后,我们可以推断出,当gnuplot从函数绘制轮廓时,它将选择x值并绘制y等值线。因此,有许多x样本和许多y等值线会绘制高分辨率的轮廓,而y样本和x等值线是不相关的(如果您不绘制表面)。