样本,等值样本以及它们如何影响轮廓线

时间:2018-07-09 02:11:11

标签: gnuplot contour

如果您未将samplesisosamples都设置为适当的值,则gnuplot生成的轮廓线可能看起来很奇怪(意外)。我费了好几个小时才能弄清楚set samplesset isosamples对轮廓线外观的影响,但是,我观察到的是将两者都设置为足够大的值会产生美观的轮廓。不过,我想了解这是如何工作的。

  1. 在轮廓线的上下文中set samplesset isosamples有什么区别?
  2. set samples如何影响轮廓线的生成?
  3. 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的第一个参数设置为尽可能小的值不会有任何危害。这不是完全直观的。那么这是如何工作的?

1 个答案:

答案 0 :(得分:2)

首先,讨论samplesisosamples的设计用途。当查看实际图而不是等高线图时,这是最好的。

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轴方向看: 4 Samples along x-direction

朝y轴方向看: 200 Samples along y-direction


因此,由于在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轴绘制表面曲线。

isosamples example


以上示例说明了set samplesset isosamples的主要目的。它们仅间接影响轮廓。在您的情况下,您只对轮廓图感兴趣,甚至不显示曲面图。关于gnuplot如何绘制轮廓的一个线索是它解释了如何使用谨慎的数据绘制轮廓。

格罗玛克斯:

  

为了绘制轮廓,数据应组织为“网格数据”。在    这样的文件会列出单个y等值线的所有点,然后    指向下一个y等值线,依此类推。单个空白行(一行    除空格,回车符和/或其他字符外,不包含其他任何字符    换行符),将一个y-isoline与下一个y-isoline分开。

根据这种解释,gnuplot似乎更喜欢选择x值并绘制y等值线。然后,我们可以推断出,当gnuplot从函数绘制轮廓时,它将选择x值并绘制y等值线。因此,有许多x样本和许多y等值线会绘制高分辨率的轮廓,而y样本和x等值线是不相关的(如果您不绘制表面)。