Python Matplotlib模块 绘图3(极坐标图)

1.绘制极坐标线形图:

matplotlib.pyplot.polar(<theta>,<r>[,**kwargs])
  #也用于创建极坐标绘图区
  #参数说明:
    theta:指定θ坐标,单位为弧度;为数组
      #起始位置为正右方,>0表示逆时针旋转,<0表示顺时针旋转
    r:指定r坐标;为数组
    kwargs:指定其他参数(见下表1,即下图1~2)

Python Matplotlib模块 绘图3(极坐标图)_第1张图片
Python Matplotlib模块 绘图3(极坐标图)_第2张图片
Python Matplotlib模块 绘图3(极坐标图)_第3张图片
Python Matplotlib模块 绘图3(极坐标图)_第4张图片
Python Matplotlib模块 绘图3(极坐标图)_第5张图片
Python Matplotlib模块 绘图3(极坐标图)_第6张图片

>>> import numpy as np
>>> import matplotlib.pyplot as plt
#设置画布大小:
>>> plt.figure(figsize=(8.0,6.0))
<Figure size 800x600 with 0 Axes>
#设置3个数据,theta为点位置的弧度参数,r为点的半径坐标
>>> theta1=np.array([1.25*np.pi,np.pi/2,0])
>>> theta2=np.array([-np.pi/6,-np.pi/2,0,np.pi/2,np.pi])
>>> theta3=np.arange(0,2*np.pi,0.5)
>>> r1=np.array([4,2,3])
>>> r2=np.array([5,2,4,5,3])
>>> r3=np.random.randint(0,5,13)
#绘制第1个极坐标图:标记样式为细菱形,大小为8,点间的连线样式为":"
>>> plt.polar(theta1,r1,marker='d',ms=8,ls=':',label='数据一')
[<matplotlib.lines.Line2D object at 0x0000017790B9CEC8>]
#填充第1个极坐标图,填充颜色为蓝色,透明度0.3
>>> plt.fill(theta1,r1,color='b',alpha=0.3)
[<matplotlib.patches.Polygon object at 0x0000017790BA9E08>]
#绘制第2个极坐标图,将marker/linestyle/color组合起来以str形式传入
>>> plt.polar(theta2,r2,'*-g',ms=10,label='数据二')
[<matplotlib.lines.Line2D object at 0x0000017790B98B88>]
#绘制第3个极坐标图,设置linestyle=none(点与点之间不相连)
>>> plt.polar(theta3,r3, marker='o',ls='none',ms=8,color='r',label='数据三')
[<matplotlib.lines.Line2D object at 0x0000017791D28B48>]
>>> plt.show()

Python Matplotlib模块 绘图3(极坐标图)_第7张图片
2.绘制雷达图:

先调用plt.polar(),再调用plt.fill()
  #调用plt.polar()是为了将坐标区转换为极坐标区
  如果想改变雷达图边线的属性,可以先使用plt.polar()绘制,再使用plt.fill()填充

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> plt.figure(figsize=(8.0,6.0))
<Figure size 800x600 with 0 Axes>
>>> theta=np.linspace(0,2*np.pi,6,endpoint=False)
>>> data1=np.array([9,4,3,5,2,8])
>>> data2=np.array([3,6,9,6,3,2])
>>> plt.polar()
[]
>>> plt.fill(theta,data1,color='b',alpha=0.3)
[<matplotlib.patches.Polygon object at 0x000001D16F3CAF88>]
>>> plt.fill(theta,data2,color='r',alpha=0.3)
[<matplotlib.patches.Polygon object at 0x000001D16F3CA148>]
>>> labels=np.array(['Python','Golang','Java','C++','PHP','JavaScript'])
>>> plt.thetagrids(theta*180/np.pi,labels)
(<a list of 14 Line2D ticklines objects>, <a list of 7 Text major ticklabel objects>)
>>> plt.show()

Python Matplotlib模块 绘图3(极坐标图)_第8张图片
3.绘制极坐标散点图
(1)方法1:

使用plt.polar()并设置ls='none'

#实例:参见 1

(2)方法1:

先用plt.polar()创建极坐标区,再用plt.scatter()绘制散点图

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> N=50
>>> r=2*np.random.rand(N)
>>> theta=2*np.pi*np.random.rand(N)
>>> size=200*r**2
>>> colors=N*np.random.rand(N)
>>> plt.polar()
[]
>>> plt.scatter(theta,r,s=size,c=colors,alpha=0.8)
<matplotlib.collections.PathCollection object at 0x000001D17024BA88>
>>> plt.title('极坐标散点图示例一',pad=15)
Text(0.5, 1.05, '极坐标散点图示例一')
>>> plt.show()#结果见下图

Python Matplotlib模块 绘图3(极坐标图)_第9张图片
(3)方法3:

先用plt.subplot()添加极坐标子区(设置projection='polar'),再用plt.scatter()绘制散点图

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> N=50
>>> r=2*np.random.rand(N)
>>> theta=2*np.pi*np.random.rand(N)
>>> size=200*r**2
>>> colors=N*np.random.rand(N)
>>> plt.subplot(111,projection='polar')
<matplotlib.axes._subplots.PolarAxesSubplot object at 0x000001D170234448>
>>> plt.scatter(theta,r,s=size,c=colors,alpha=0.8)
<matplotlib.collections.PathCollection object at 0x000001D1703F7188>
>>> plt.title('极坐标散点图示例二',pad=15)
Text(0.5, 1.05, '极坐标散点图示例二')
>>> plt.show()#结果见下图

Python Matplotlib模块 绘图3(极坐标图)_第10张图片
(4)方法4:

先用plt.axes()设置projection='polar'或polar=True(使用极坐标),再用plt.scatter()绘制散点图

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> N=50
>>> r=2*np.random.rand(N)
>>> theta=2*np.pi*np.random.rand(N)
>>> size=200*r**2
>>> colors=N*np.random.rand(N)
>>> #plt.axes(polar=True)
... plt.axes(projection='polar')
<matplotlib.axes._subplots.PolarAxesSubplot object at 0x000001D17009CC08>
>>> plt.scatter(theta,r,s=size,c=colors,alpha=0.8)
<matplotlib.collections.PathCollection object at 0x000001D170592C48>
>>> plt.title('极坐标散点图示例三',pad=15)
Text(0.5, 1.05, '极坐标散点图示例三')
>>> plt.show()#结果见下图

Python Matplotlib模块 绘图3(极坐标图)_第11张图片
4.绘制极坐标柱状图:

方法类似极坐标散点图,即plt.bar()与plt.polar()/plt.subplot()/plt.axes三者之一的结合使用

#实例:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> plt.rcParams['font.sans-serif']=['Microsoft YaHei']
>>> r=np.random.rand(8)
>>> theta=np.arange(0,2*np.pi,2*np.pi/8)
>>> colors=np.array(['#4bb2c5','#c5b47f','#EAA228','#579575','#839557','#958c12','#953579','#4b5de4'])
>>> plt.polar()
[]
>>> plt.bar(theta,r,color=colors,alpha=0.8)
<BarContainer object of 8 artists>
>>> plt.show()#结果见下图

Python Matplotlib模块 绘图3(极坐标图)_第12张图片

你可能感兴趣的:(Python,python,数据可视化,数据分析)