Я использую C ++ для потоковой передачи скриптов Gnuplot. Но я нахожу, что это очень раздражает в отношении формата изображения и формата бумаги. У кого-нибудь есть хороший способ:
(1) Сохраняйте правильное соотношение сторон, длина 1 — 1, 2 — 2 на графике. Я обнаружил, что соотношение сторон зависит от размера бумаги !!!
(2) Бумага с нулевым полем, размер бумаги будет автоматически масштабирован. Я обнаружил, что фигура eps всегда имеет большие поля.
set terminal postscript eps enhanced color font 'Helvetica,2000' size 640,480
set output 'grid.eps'
set size 1, 1
set hidden3d
unset key
unset tics
unset border
set view 0,0,1,1
set xrange [0:3]
set yrange [0:6]
set zrange [0:1]
set title 'grid test'
splot 'grid.dat' using 1:2:3 with lines lt 2 lc rgb '#100000'
grid.dat
файл:
0 0 0
1 0 0
2 0 0
3 0 0
0 2 0
1 2 0
2 2 0
3 2 0
0 4 0
1 4 0
2 4 0
3 4 0
0 6 0
1 6 0
2 6 0
3 6 0
Говоря правильное соотношение сторон, я имею в виду, что я хочу, чтобы график выглядел точно как прямоугольная сетка 2: 1, а не как квадрат или что-то еще. Я не хочу, чтобы фигура как-то растягивалась.
Если я вас правильно понимаю, вы хотите установить соотношение сторон вашего сюжета. Для этого вы хотите использовать что-то вроде:
set size ratio ASPECT_RATIO
это сделает так, чтобы длина оси y, деленная на длину оси x (в единицах графика), была равна ASPECT_RATIO
, Если вы хотите, чтобы соотношение определялось в единицах графика, вы должны использовать отрицательное число для ASPECT_RATIO
,
Вот хитрость, предположим, у нас есть следующий общий сценарий:
set terminal postscript eps enhanced color font 'Helvetica,20' size Lx,Ly
set xrange [XMIN:XMAX]
set yrange [YMIN:YMAX]
Сначала установите XMIN и XMAX, а также YMIN и YMAX на минимальное и максимальное значения графиков.
Затем установите Lx
скажи пусть Lx = 100
, затем Ly
должен быть установлен как floor(100*(YMAX-YMIN)/(XMAX-XMIN)))
,
После этого можно использовать какой-нибудь сценарий оболочки для удаления полей.