1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
# Copyright (C) 2001-2016 Alan W. Irwin
# Polar plot demo.
#
# This file is part of PLplot.
#
# PLplot is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PLplot is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with PLplot; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
from numpy import *
# main
#
# Generates polar plot, with 1-1 scaling.
def main(w):
dtr = pi / 180.0
x0 = cos(dtr*arange(361))
y0 = sin(dtr*arange(361))
# Set up viewport and window, but do not draw box
w.plenv(-1.3, 1.3, -1.3, 1.3, 1, -2)
# Draw circles for polar grid
for i in range(10):
w.plarc(0.0, 0.0, 0.1*(i+1), 0.1*(i+1), 0.0, 360.0, 0.0, 0)
w.plcol0(2)
for i in range(12):
theta = 30.0 * i
dx = cos(dtr * theta)
dy = sin(dtr * theta)
# Draw radial spokes for polar grid
w.pljoin(0.0, 0.0, dx, dy)
# Write labels for angle
text = str(int(theta))
if theta < 9.99:
offset = 0.45
elif theta < 99.9:
offset = 0.30
else:
offset = 0.15
#Slightly off zero to avoid floating point logic flips at 90 and 270 deg.
if dx >= -0.00001:
w.plptex(dx, dy, dx, dy, -offset, text)
else:
w.plptex(dx, dy, -dx, -dy, 1.+offset, text)
# Draw the graph
r = sin((dtr*5.)*arange(361))
x = x0*r
y = y0*r
w.plcol0(3)
w.plline(x, y)
w.plcol0(4)
w.plmtex("t", 2.0, 0.5, 0.5, "#frPLplot Example 3 - r(#gh)=sin 5#gh")
# Restore defaults
# Must be done independently because otherwise this changes output files
# and destroys agreement with C examples.
#w.plcol0(1)
|