zoukankan      html  css  js  c++  java
  • matplotlib极坐标方法详解

    一、极坐标

    在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。通常情况下,M的极径坐标单位为1(长度单位),极角坐标单位为rad(或°)
    image

    二、matplotlib绘制极坐标图

    1.创建极坐标图

    matplotlib的pyplot子库提供了绘制极坐标图的方法,在调用subplot()创建子图时通过设置projection='polar',便可创建一个极坐标子图,然后调用plot()在极坐标子图中绘图。
    下面就创建一个极坐标子图和一个直角坐标子图进行对比。

    import matplotlib.pyplot as plt
    ax1 = plt.subplot(121, projection='polar')
    ax2 = plt.subplot(122)
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    极坐标系

    2.极坐标图设置

    dir()命令可以得到一个对象的所有方法属性,通过比较ax1ax2的方法属性便可知道极坐标有哪些设置方法。

    >>> print(sorted(set(dir(ax1))-set(dir(ax2))))
    ['InvertedPolarTransform', 'PolarAffine', 'PolarTransform', 'RadialLocator', 'ThetaFormatter', '_default_rlabel_position', '_default_theta_direction', '_default_theta_offset', '_direction', '_r_label_position', '_theta_label1_position', '_theta_label2_position', '_theta_offset', '_xaxis_text1_transform', '_xaxis_text2_transform', '_yaxis_text_transform', 'get_rlabel_position', 'get_rmax', 'get_rmin', 'get_theta_direction', 'get_theta_offset', 'resolution', 'set_rgrids', 'set_rlabel_position', 'set_rlim', 'set_rmax', 'set_rmin', 'set_rscale', 'set_rticks', 'set_theta_direction', 'set_theta_offset', 'set_theta_zero_location', 'set_thetagrids', 'transProjection', 'transProjectionAffine', 'transPureProjection']
    

    2.1 极坐标正方向

    set_theta_direction方法用于设置极坐标的正方向

    • set_theta_direction的参数值为1,'counterclockwise'或者是'anticlockwise'的时候,正方向为逆时针;
    • set_theta_direction的参数值为-1或者是'clockwise'的时候,正方向为顺时针;
    • 默认情况下正方向为逆时针
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_theta_direction(-1)
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.2 极坐标0°位置

    set_theta_zero_location方法用于设置极坐标0°位置

    • 0°可设置在八个位置,分别为N, NW, W, SW, S, SE, E, NE
    • set_theta_zero_location的参数值为'N','NW','W','SW','S','SE','E','NE'时,0°分别对应的位置为方位N, NW, W, SW, S, SE, E, NE;
    • 默认情况下0°位于E方位
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_theta_zero_location('N')
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.3极坐标角度网格线显示

    set_thetagrids方法用于设置极坐标角度网格线显示

    • 参数为所要显示网格线的角度值列表
    • 默认显示0°、45°、90°、135°、180°、225°、270°、315°的网格线
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_thetagrids(np.arange(0.0, 360.0, 30.0))
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.4极坐标角度偏离

    set_theta_offset方法用于设置角度偏离

    • 参数值为弧度值数值
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_theta_offset(np.pi)
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.5极坐标极径网格线显示

    set_rgrids方法用于设置极径网格线显示

    • 参数值为所要显示网格线的极径值列表,最小值不能小于等于0
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_rgrids(np.arange(0.2,1.0,0.4))
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.6极坐标极径标签位置

    set_rlabel_position方法用于设置极径标签显示位置

    • 参数为标签所要显示在的角度
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_rlabel_position('90')
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.7极坐标极径范围

    set_rlim方法用于设置显示的极径范围

    • 参数为极径最小值,最大值
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_rlim(0.6,1.2)
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image

    2.8极坐标极径最大值

    set_rmax方法用于设置显示的极径最大值

    • 该方法要在绘制完图像后使用才有效
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    ax2.set_rmax(0.6)
    plt.show()
    

    image

    2.9极坐标极径最小值

    set_rmin方法用于设置显示的极径最小值

    • 该方法要在绘制完图像后使用才有效
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    ax2.set_rmin(0.6)
    plt.show()
    

    image

    2.10 极径对数坐标

    set_rscale方法用于设置极径对数坐标

    • 参数值为'linear','log','symlog'
    • 默认值为'linear'
    • 该方法要在绘制完图像后使用才有效
    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    ax2.set_rlim(math.pow(10,-1),math.pow(10,0))
    ax1.set_rscale('linear')
    ax2.set_rscale('symlog')
    plt.show()
    

    image

    2.11 极坐标极径网格线显示范围

    set_rticks方法用于设置极径网格线的显示范围

    import matplotlib.pyplot as plt
    import numpy as np
    theta=np.arange(0,2*np.pi,0.02)
    ax1= plt.subplot(121, projection='polar')
    ax2= plt.subplot(122, projection='polar')
    ax2.set_rticks(np.arange(0.1, 0.9, 0.2))
    ax1.plot(theta,theta/6,'--',lw=2)
    ax2.plot(theta,theta/6,'--',lw=2)
    plt.show()
    

    image


    想观看Matplotlib教学视频,了解更多Matplotlib实用技巧可关注

    微信公众账号: MatplotlibClass

    今日头条号:Matplotlib小讲堂

  • 相关阅读:
    学习MeteoInfo二次开发教程(十一)
    学习MeteoInfo二次开发教程(十)
    学习MeteoInfo二次开发教程(九)
    学习MeteoInfo二次开发教程(八)
    linux 03 命令 续
    linux 02 基础命令
    linux 01 基础命令
    第九节课 迭代器生成器、模块和包
    第八节课 文件、异常、文件的输入输出
    第七节课 内置函数、作用域、闭包、递归
  • 原文地址:https://www.cnblogs.com/kallan/p/6738577.html
Copyright © 2011-2022 走看看