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:
w:en:Creative Commons
attribution share alike
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.
Category:CC-BY-SA-3.0#Archimedean%20spiral%20polar.svg
Category:Self-published work Category:Archimedean spirals Category:Images with Python source code Category:Polar coordinate system
Category:Archimedean spirals Category:CC-BY-SA-3.0 Category:Images with Python source code Category:Polar coordinate system Category:Self-published work