File:Archimedean spiral polar.svg
Summary
Description |
Français : Spirale d'Archimède représentée sur un graphe polaire English: Archimedean spiral represented on a polar graph |
Date | |
Source | Own work |
Author | Guillaume Jacquenot |
Source code (Python)
# -*- coding: utf-8 -*-
#
# Script to plot an Archimedean spiral
#
# http://en.wikipedia.org/wiki/Archimedean_spiral
#
# The Archimedean spiral (also known as the arithmetic spiral
# or spiral of Archimedes) is a spiral named after the 3rd
# century BC Greek mathematician Archimedes. It is the locus
# of points corresponding to the locations over time of a
# point moving away from a fixed point with a constant speed
# along a line which rotates with constant angular velocity.
#
# Text under the
# Creative Commons Attribution-ShareAlike License
# **************************************************************
#
#
# Guillaume Jacquenot
# 2013/03/17
import numpy as np
from fractions import Fraction
import matplotlib
from matplotlib.pyplot import figure, show, rc, grid
def updateThetaAxis(ax):
thetaFractions = [Fraction.from_float(item/np.pi) for item in ax.get_xticks()]
labels=[]
for f in thetaFractions:
if f.numerator==0:
labels.append('0')
elif f.numerator==f.denominator:
labels.append('\\pi')
elif f.numerator==1:
labels.append('\\frac{{\\pi }}{'+str(f.denominator)+'}')
else:
labels.append('\\frac{{'+str(f.numerator)+'\\pi }}{'+str(f.denominator)+'}')
labels = ['$\\Large'+l+'$' for l in labels]
ax.set_xticklabels(labels,fontsize=20)
def updateRAxis(ax):
thetaFractions = [Fraction.from_float(item) for item in ax.get_yticks()]
labels=[]
for f in thetaFractions:
if f.numerator==0:
labels.append('0')
elif f.numerator==f.denominator:
labels.append('1')
elif f.denominator==1:
labels.append(str(f.numerator))
else:
labels.append('\\frac{{'+str(f.numerator)+'}}{'+str(f.denominator)+'}')
labels = ['$'+l+'$' for l in labels]
ax.set_yticklabels(labels,fontsize=20)
def makePlot(outputFilename = r'Archimedean_spiral_polar.svg'):
rc('grid', linewidth=1, linestyle='-') # color='#316931'
rc('xtick', labelsize=15)
rc('ytick', labelsize=15)
rc('font',**{'family':'serif','serif':['Palatino'],'size':14})
rc('text', usetex=True)
width, height = matplotlib.rcParams['figure.figsize']
size = min(width, height)
fig = figure(figsize=(size, size))
ax = fig.add_axes([0.12, 0.12, 0.76, 0.76], polar=True, )#axisbg='#d5de9c'
r = np.arange(0, 3.0, 0.01)
theta = 2*np.pi*r
ax.plot(theta, r, color='#ee8d18', lw=3)
ax.set_rmax(2.0)
updateThetaAxis(ax)
updateRAxis(ax)
grid(True)
ax.set_title('$\\rho=\\frac{1}{2\\pi}\\theta$',fontsize=20)
fig.savefig(outputFilename)
fig.show()
makePlot()
Licensing
I, the copyright holder of this work, hereby publish it under the following license:
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.