def _colorbar(off=0.0, colors=256): global _plt gr.savestate() viewport = _plt.kwargs['viewport'] zmin, zmax = _plt.kwargs['zrange'] gr.setwindow(0, 1, zmin, zmax) gr.setviewport(viewport[1] + 0.02 + off, viewport[1] + 0.05 + off, viewport[2], viewport[3]) l = [1000+int(255*i/(colors-1)) for i in range(colors)] gr.cellarray(0, 1, zmax, zmin, 1, colors, l) diag = ((viewport[1] - viewport[0])**2 + (viewport[3] - viewport[2])**2)**0.5 charheight = max(0.016 * diag, 0.012) gr.setcharheight(charheight) if _plt.kwargs['scale'] & gr.OPTION_Z_LOG: gr.setscale(gr.OPTION_Y_LOG) gr.axes(0, 2, 1, zmin, 0, 1, 0.005) else: ztick = 0.5 * gr.tick(zmin, zmax) gr.axes(0, ztick, 1, zmin, 0, 1, 0.005) gr.restorestate()
def _draw_polar_axes(): global _plt viewport = _plt.kwargs['viewport'] diag = ((viewport[1]-viewport[0])**2 + (viewport[3]-viewport[2])**2)**0.5 charheight = max(0.018 * diag, 0.012) window = _plt.kwargs['window'] r_min, r_max = window[2], window[3] gr.savestate() gr.setcharheight(charheight) gr.setlinetype(gr.LINETYPE_SOLID) tick = 0.5 * gr.tick(r_min, r_max) n = int(round((r_max - r_min) / tick + 0.5)) for i in range(n+1): r = i / n if i % 2 == 0: gr.setlinecolorind(88) if i > 0: gr.drawarc(-r, r, -r, r, 0, 359) gr.settextalign(gr.TEXT_HALIGN_LEFT, gr.TEXT_VALIGN_HALF) x, y = gr.wctondc(0.05, r) gr.text(x, y, "%g" % (r_min + i * tick)) else: gr.setlinecolorind(90) gr.drawarc(-r, r, -r, r, 0, 359) for alpha in range(0, 360, 45): sinf = np.sin(np.radians(alpha+90)) cosf = np.cos(np.radians(alpha+90)) gr.polyline([sinf, 0], [cosf, 0]) gr.settextalign(gr.TEXT_HALIGN_CENTER, gr.TEXT_VALIGN_HALF) x, y = gr.wctondc(1.1 * sinf, 1.1 * cosf) gr.textext(x, y, "%d^o" % alpha) gr.restorestate()
def _set_window(kind): global _plt scale = 0 scale |= gr.OPTION_X_LOG if _plt.kwargs.get('xlog', False) else 0 scale |= gr.OPTION_Y_LOG if _plt.kwargs.get('ylog', False) else 0 scale |= gr.OPTION_Z_LOG if _plt.kwargs.get('zlog', False) else 0 scale |= gr.OPTION_FLIP_X if _plt.kwargs.get('xflip', False) else 0 scale |= gr.OPTION_FLIP_Y if _plt.kwargs.get('yflip', False) else 0 scale |= gr.OPTION_FLIP_Z if _plt.kwargs.get('zflip', False) else 0 _minmax() if kind in ('wireframe', 'surface', 'plot3', 'scatter3'): major_count = 2 else: major_count = 5 x_min, x_max = _plt.kwargs['xrange'] if not scale & gr.OPTION_X_LOG: x_min, x_max = gr.adjustlimits(x_min, x_max) x_major_count = major_count x_tick = gr.tick(x_min, x_max) / x_major_count else: x_tick = x_major_count = 1 if not scale & gr.OPTION_FLIP_X: xorg = (x_min, x_max) else: xorg = (x_max, x_min) _plt.kwargs['xaxis'] = x_tick, xorg, x_major_count y_min, y_max = _plt.kwargs['yrange'] if kind in ('hist', 'stem') and 'ylim' not in _plt.kwargs: y_min = 0 if not scale & gr.OPTION_Y_LOG: y_min, y_max = gr.adjustlimits(y_min, y_max) y_major_count = major_count y_tick = gr.tick(y_min, y_max) / y_major_count else: y_tick = y_major_count = 1 if not scale & gr.OPTION_FLIP_Y: yorg = (y_min, y_max) else: yorg = (y_max, y_min) _plt.kwargs['yaxis'] = y_tick, yorg, y_major_count _plt.kwargs['window'] = (x_min, x_max, y_min, y_max) gr.setwindow(x_min, x_max, y_min, y_max) if kind in ('wireframe', 'surface', 'plot3', 'scatter3'): z_min, z_max = _plt.kwargs['zrange'] if not scale & gr.OPTION_Z_LOG: z_min, z_max = gr.adjustlimits(z_min, z_max) z_major_count = major_count z_tick = gr.tick(z_min, z_max) / z_major_count else: z_tick = z_major_count = 1 if not scale & gr.OPTION_FLIP_Z: zorg = (z_min, z_max) else: zorg = (z_max, z_min) _plt.kwargs['zaxis'] = z_tick, zorg, z_major_count rotation = _plt.kwargs.get('rotation', 40) tilt = _plt.kwargs.get('tilt', 70) gr.setspace(z_min, z_max, rotation, tilt) _plt.kwargs['scale'] = scale gr.setscale(scale)
def _set_window(kind): global _plt scale = 0 if kind != 'polar': scale |= gr.OPTION_X_LOG if _plt.kwargs.get('xlog', False) else 0 scale |= gr.OPTION_Y_LOG if _plt.kwargs.get('ylog', False) else 0 scale |= gr.OPTION_Z_LOG if _plt.kwargs.get('zlog', False) else 0 scale |= gr.OPTION_FLIP_X if _plt.kwargs.get('xflip', False) else 0 scale |= gr.OPTION_FLIP_Y if _plt.kwargs.get('yflip', False) else 0 scale |= gr.OPTION_FLIP_Z if _plt.kwargs.get('zflip', False) else 0 _minmax() if kind in ('wireframe', 'surface', 'plot3', 'scatter3', 'polar', 'trisurf'): major_count = 2 else: major_count = 5 x_min, x_max = _plt.kwargs['xrange'] if not scale & gr.OPTION_X_LOG: x_min, x_max = gr.adjustlimits(x_min, x_max) x_major_count = major_count x_tick = gr.tick(x_min, x_max) / x_major_count else: x_tick = x_major_count = 1 if not scale & gr.OPTION_FLIP_X: xorg = (x_min, x_max) else: xorg = (x_max, x_min) _plt.kwargs['xaxis'] = x_tick, xorg, x_major_count y_min, y_max = _plt.kwargs['yrange'] if kind in ('hist', 'stem') and 'ylim' not in _plt.kwargs: y_min = 0 if not scale & gr.OPTION_Y_LOG: y_min, y_max = gr.adjustlimits(y_min, y_max) y_major_count = major_count y_tick = gr.tick(y_min, y_max) / y_major_count else: y_tick = y_major_count = 1 if not scale & gr.OPTION_FLIP_Y: yorg = (y_min, y_max) else: yorg = (y_max, y_min) _plt.kwargs['yaxis'] = y_tick, yorg, y_major_count _plt.kwargs['window'] = (x_min, x_max, y_min, y_max) if kind == 'polar': gr.setwindow(-1, 1, -1, 1) else: gr.setwindow(x_min, x_max, y_min, y_max) if kind in ('wireframe', 'surface', 'plot3', 'scatter3', 'trisurf'): z_min, z_max = _plt.kwargs['zrange'] if not scale & gr.OPTION_Z_LOG: z_min, z_max = gr.adjustlimits(z_min, z_max) z_major_count = major_count z_tick = gr.tick(z_min, z_max) / z_major_count else: z_tick = z_major_count = 1 if not scale & gr.OPTION_FLIP_Z: zorg = (z_min, z_max) else: zorg = (z_max, z_min) _plt.kwargs['zaxis'] = z_tick, zorg, z_major_count rotation = _plt.kwargs.get('rotation', 40) tilt = _plt.kwargs.get('tilt', 70) gr.setspace(z_min, z_max, rotation, tilt) _plt.kwargs['scale'] = scale gr.setscale(scale)