Gnuplot: как сделать карту pm3d прозрачной? - PullRequest
2 голосов
/ 30 апреля 2019

У меня действительно простой вопрос: я хотел бы знать, как сделать контурную фигуру (карту pm3d) прозрачной в Gnuplot (gnuplot версия 5.2).

Я мог бы найти способы сделать прозрачные графики или заполненную кривую, (например, этот сайт - http://gnuplot.sourceforge.net/demo/transparent.html) но не для контурных участков.

Я пытаюсь наложить изображение и контурный контур и сделать контур прозрачным.

Спасибо за вашу помощь!

enter image description here

Добавлено: Когда я пытаюсь сделать

set style fill transparent solid 0.5

область контура изменилась на серый .. почему это?

enter image description here

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Как я понимаю твой вопрос ... тебе действительно нужны splot и pm3d?Возможно, следующее также является практически осуществимым решением только с 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

1 голос
/ 30 апреля 2019

Существует глобальная настройка стиля, которая влияет на все заполненные объекты в gnuplot, включая четырехугольники, составляющие поверхность pm3d. Чтобы установить прозрачность 50%:

set style fill transparent solid 0.5

Это относится только к заполнению области, но не к краям. Если вы хотите, чтобы поверхность в целом была прозрачной, лучше не рисовать края:

set pm3d noborder

Примечание: я не уверен, как "контурный график" вписывается в это. Контурные линии - это нечто другое. Вы также можете установить их прозрачность, но это не повлияет на поверхность pm3d как таковую.

Вот поверхность, нарисованная как «splot ... with pm3d» до и после установки прозрачного стиля заливки. enter image description here

...