#!/usr/bin/env python
import sys
import csv
import codecs
import matplotlib
import numpy as np
from matplotlib.pyplot import figure, show, rc, grid
def main():
argvs = sys.argv
argc = len(argvs)
if (argc != 4):
print "Usage: python %s input_file output_file title" %(argvs[0])
sys.exit(0)
in_file = argvs[1]
out_file = argvs[2]
title = argvs[3]
csvfile = codecs.open(in_file, 'r', 'utf-8')
list_x = []
list_y = []
for row in csv.reader(csvfile):
radian = 0
if float(row[0]) < 0:
radian = (float(row[0])+360.0)/180
else:
radian = float(row[0])/180
list_x.append(np.pi*radian)
list_y.append(float(row[1]))
init_graph_settings()
draw_polar_graph(list_x, list_y, out_file, title)
csvfile.close()
def init_graph_settings():
# radar green, solid grid lines
rc('grid', color='#316931', linewidth=0.5, linestyle='--')
rc('xtick', labelsize=15)
rc('ytick', labelsize=10)
def draw_polar_graph(list_x, list_y, out_file, title):
"""
draws polar graph
:param list_x: list contains x values
:param list_y: list contains y values
:param title: title for a graph
:type list_x: list contains float values
:type list_y: list contains float values
:type title: string.
"""
# force square figure and square axes looks better for polar, IMO
width, height = matplotlib.rcParams['figure.figsize']
size = min(width, height)
# make a square figure
fig = figure(figsize=(size, size))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True, axisbg='#d5de9c')
ax.plot(list_x, list_y, 'r.', markersize=2)
ax.set_rmax(10000.0)
ax.set_title(title, fontsize=20)
grid(True)
fig.savefig(out_file, dpi=100)
if __name__ == "__main__":
main()
2011/07/23
python tips: creating polar graph using matplotlib
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment