C SUBROUTINE draw_axes(xmin,xmax,ymin,ymax) IMPLICIT NONE REAL x0,y0,xmin,xmax,ymin,ymax,dx,dy,tx,ty,x,y INTEGER IR_, itick, ntick ntick = 10 ! 目盛の数 * dx は x 軸上の目盛の間隔 dx = (xmax - xmin)/ntick * dy は y 軸上の目盛の間隔 dy = (ymax - ymin)/ntick * window 文でマージン(縁)をとる CALL GWindow(IR_, xmin - dx, ymin - dy, xmax + dx, ymax + dy) x0 = max(0.0,xmin) IF(ymin*ymax .LT. 0) then y0 = 0 ELSE y0 = ymin END IF CALL GWline(IR_, xmin, y0, xmax, y0) ! 水平軸 CALL GWline(IR_, x0, ymin, x0, ymax) ! 垂直軸 tx = 0.1*dy ! 目盛の大きさ ty = 0.1*dx DO itick = 0, ntick x = xmin + itick*dx CALL GWline(IR_, x, y0 - tx, x, y0 + tx) * x 軸に目盛を描く y = ymin + itick*dy CALL GWline(IR_, x0 - ty, y, x0 + ty, y) * y 軸に目盛を描く ENDDO END C SUBROUTINE compute_aspect_ratio(r,x,y) IMPLICIT NONE REAL aspect_ratio, m, size, r, x, y INTEGER IR_, px, py m = 0.1*r ! 縁をつける size = r + m * px, py: 水平方向と垂直方向のピクセル数 CALL GWsize(IR_, 7, px,py) IF(px .GT. py) THEN aspect_ratio = REAL(px)/py x = aspect_ratio*size y = size ELSE aspect_ratio = REAL(py)/px x = size y = aspect_ratio*size END IF END