我有一个非常简单的问题:我想知道如何在Gnuplot(gnuplot版本5.2)中使轮廓图形(pm3d地图)透明。
我可以找到制作透明图或填充曲线的方法, (例如此网站-http://gnuplot.sourceforge.net/demo/transparent.html) 而不是等高线图。
我想做的是叠加图像和等高线图,并希望使等高线透明。
谢谢您的帮助!
已添加: 当我尝试做
set style fill transparent solid 0.5
轮廓区域变为灰色。为什么?
答案 0 :(得分:1)
有一个全局样式设置,该设置会影响gnuplot中的所有填充对象,包括构成pm3d曲面的四边形。设置50%的透明度:
set style fill transparent solid 0.5
这仅适用于区域填充,但不适用于边缘。如果要使整个表面透明,则最好不要绘制边缘:
set pm3d noborder
注意:我不确定“轮廓图”如何适合这个。等高线是另外一回事。您也可以将它们设置为透明,但这不会影响pm3d表面本身。
答案 1 :(得分:1)
据我了解,您的问题...您真的需要splot
和pm3d
吗?
也许仅使用plot ... with boxxyerror
,以下也是可行的解决方案。可能可以进一步优化。
代码:
### 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
结果: