gnuplot:如何将pm3d地图设置为透明?

时间:2019-04-30 07:41:23

标签: gnuplot

我有一个非常简单的问题:我想知道如何在Gnuplot(gnuplot版本5.2)中使轮廓图形(pm3d地图)透明。

我可以找到制作透明图或填充曲线的方法, (例如此网站-http://gnuplot.sourceforge.net/demo/transparent.html) 而不是等高线图。

我想做的是叠加图像和等高线图,并希望使等高线透明。

谢谢您的帮助!

enter image description here

已添加: 当我尝试做

set style fill transparent solid 0.5

轮廓区域变为灰色。为什么?

enter image description here

2 个答案:

答案 0 :(得分:1)

有一个全局样式设置,该设置会影响gnuplot中的所有填充对象,包括构成pm3d曲面的四边形。设置50%的透明度:

set style fill transparent solid 0.5

这仅适用于区域填充,但不适用于边缘。如果要使整个表面透明​​,则最好不要绘制边缘:

set pm3d noborder

注意:我不确定“轮廓图”如何适合这个。等高线是另外一回事。您也可以将它们设置为透明,但这不会影响pm3d表面本身。

在此处是将填充样式设置为透明前后绘制为“用pm3d绘制...”的表面。 enter image description here

答案 1 :(得分:1)

据我了解,您的问题...您真的需要splotpm3d吗? 也许仅使用plot ... with boxxyerror,以下也是可行的解决方案。可能可以进一步优化。

输入:“ MapTest.png” enter image description here

代码:

### map with transparent overlay
reset session
set term pngcairo size 700,700 font ",10"
set output "MapTransparent.png"
set size square
set margins 0,0,0,0
unset tics
set cbtics
unset key

# function "borrowed" from http://gnuplot-tricks.blogspot.com/2009/07/maps-contour-plots-with-labels.html
f(x,y)=(sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x))*3+15
set samples 51
set isosamples 51
set table $Data
    splot [0:600][0:600] f(x/60.,y/60.)
unset table
# create contour lines
set contour base
set cntrparam levels 10
unset surface
set table $Contour
    splot [0:600][0:600] f(x/60.,y/60.)
unset table

set xrange[0:600]
set yrange[0:600]
set palette rgbformulae 33,13,10

set style fill transparent solid 0.4 noborder
plot \
    "MapTest.png" binary filetype=png w rgbimage, \
    $Data u 1:2:(6):(6):3 with boxxyerror palette,\
    $Contour u 1:2:3 w l lt rgb "grey"

set output
### end of code

结果:

enter image description here