Я хотел бы знать, есть ли способ проецировать метки и метки осей x и y на плоскость xy пятна с помощью gnuplot.

Этот пример показывает, чего я хочу:

enter image description here

Что контрастирует с тем, что у меня есть сейчас:

enter image description here

Обратите внимание, что на верхнем изображении метка кажется «лежащей» на плоскости xy, а на нижнем изображении она всегда перпендикулярна зрителю. Мне интересно, есть ли простой способ сделать это с помощью gnuplot. Заранее спасибо.

2
mroavi 24 Окт 2018 в 01:46

2 ответа

Лучший ответ

Вопрос ясен, но gnuplot не может проецировать текст на плоскость.

- Кристоф 26 окт.

0
mroavi 10 Апр 2020 в 20:18

Если вам абсолютно необходимы проецируемые метки на плоскость xy, и если вы не боитесь громоздкого обходного пути, вы можете попробовать следующее.

  • gnuplot может проецировать изображение на плоскость xy
  • создайте свою плоскость xy с метками и сохраните ее как PNG
  • используйте multiplot для наложения и выравнивания двух графиков

Но здесь возникает трудность: вам нужно идеально выровнять два графика, правильно установив поля. Должен признаться, я до сих пор не понял, как их автоматически выровнять с помощью простых вычислений вместо утомительной возни с полями вручную. Кроме того, вам необходимо соответственно установить размер, шрифт и смещения. См. Следующий код как отправную точку. Улучшения приветствуются. Удачи!

< Сильный > Код:

### labels projected on xy-plane
reset session

# draw the bottom and save as PNG image
SizeX=500; SizeY=500
set term pngcairo size SizeX,SizeY
set output "tb3DLabelXY.png"

set size square
myMargin = 0.13
set margin screen myMargin, screen 1-myMargin, screen myMargin, screen 1-myMargin
set xrange[-10:10]
set xlabel "Precipitation amount, x" font ",20"
set y2range[-10:10]
set y2label "Precipitation amount, y" font ",20" offset -1.5,0
set y2tics rotate by 90 offset 0,-1
set tics font ",16"
unset ytics
set yrange[0:1]
set grid xtics, y2tics lw 2
plot -1 notitle
set output

reset session
set term wxt size 500,500  # or whatever terminal you have
set view equal xy
set view 60,60

set multiplot
    unset xtics
    unset ytics
    unset ztics
    unset xlabel    
    myMargin = 0.17
    # margins l,r,b,t
    set margins screen myMargin, screen 1-myMargin, screen myMargin, screen 1-myMargin
    set zrange[0:200]
    unset border
    splot 'tb3DLabelXY.png' binary filetype=png  with rgbimage notitle

    set border 4095
    set isosamples 20,20
    set xyplane at -100
    # margins l,r,b,t
    set margins screen 0.255, screen 0.74, screen 0.04, screen 0.81
    set xrange[-10:10]
    set yrange[-10:10]
    set zrange[-100:100]
    set ztics -80,40
    set hidden3d
    splot x*y

unset multiplot
### end of code

< Сильный > Результат :

enter image description here

0
theozh 11 Апр 2020 в 15:29
52958800