gnuplot:在x-y平面上叠加等高线图和数据

时间:2014-11-17 04:53:45

标签: plot gnuplot contour

我是gnuplot的新手。我试图在x-y平面上叠加等高线图和一些数据点。

给出了我的轮廓数据(surface1.txthere
给出了单个点的数据(points1.txthere

我正在尝试运行此脚本:

set multiplot
# plot the contour from the surface1.txt
unset key
set dgrid3d
unset surface
set contour base
# these values need to be set (requirement)
set cntrparam level incremental 0.16, 0.259, 4.47
set view 0,0
unset ztics
splot "surface1.txt" with lines
# plot the points on the x-y plane
unset xtics
unset ytics
splot "points1.txt"
unset multiplot

我得到了这个输出:

enter image description here

正如你所看到的,我试图在x-y平面上放置的单个点也是轮廓,我需要做的是:

  1. 将“points1.txt”中的点显示为单点(非轮廓)
  2. 情节被缩小,我需要一个全屏图像。
  3. 将y轴刻度从右向左垂直移动。
  4. 删除所有颜色。我需要一个灰度图像。
  5. 请帮忙。

    修改 我也尝试过这种方式 -

    set contour base
    set cntrparam bspline
    set cntrparam level incremental 0.16, 0.259, 4.47
    set view map
    set dgrid3d
    unset key
    splot 'surface1.txt' nosurface with lines, \
        'points1.txt' nocontour
    

    我得到了这个情节 -

    enter image description here

1 个答案:

答案 0 :(得分:2)

您必须考虑以下几点:

  1. set dgrid3d插入您的数据,并被认为用于非网格化数据。没有选项nodgrid3d允许您仅将其用于一个绘图部分。这是您在第二次尝试中看到的内容:插入点的数据并生成10x10网格。

    但是,您不需要使用它,因为您有网格化数据,但在数据文件中缺少一些空行。只需在x值更改时插入一个空行,例如:

    ...
    0.0 0.7999999999999999  2.0477812692428836
    0.0 0.8999999999999999  2.3096674656635523
    0.0 0.9999999999999999  2.5772908911794614
    
    0.1 0.0 0.8254201558219569
    0.1 0.1 1.0350909705482707
    0.1 0.2 1.2504990143698247
    ...
    
  2. 使用轮廓的nosurface选项,绘制点时使用nocontours

  3. 可能的脚本可能是:

    set contour base
    set cntrparam level incremental 0.16, 0.259, 4.47
    unset key
    set view map
    set for [i=1:20] linetype i lc rgb 'black'
    
    set terminal pngcairo dashed size 600,400
    set output 'contour-with-points.png'
    splot 'surface1.txt' with lines nosurface, 'points1.txt' with points nocontour pt 7
    

    结果为enter image description here

    我仅在此示例中使用pngcairo终端,对于您的文档,您应该使用矢量格式,例如pdfcairo,postscript,epslatex或类似的格式。