Python 第三方模块 绘图 Matplotlib模块 绘图3(极坐标图,热力图,箱线图)

1.绘制极坐标线形图:

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

>>> 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()

在这里插入图片描述
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()

在这里插入图片描述
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()#结果见下图

在这里插入图片描述
(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()#结果见下图

在这里插入图片描述
(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()#结果见下图

在这里插入图片描述
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()#结果见下图

在这里插入图片描述
5.绘制热力图:

plt.imshow(<X>[,cmap=None,norm=None,aspect=None,interpolation=None,alpha=None,vmin=None,vmax=None,origin=None,extent=None,filternorm=True,filterrad=4.0,resample=None,url=None,data=None,**kwargs)
  #参数说明:
  	X:指定图像数据;为array-like/PIL Image
  	interpolation:指定插值方法;可为'none'/'antialiased'/'nearest'/'bilinear'/'bicubic'/'spline16'/'spline36'/'hanning'/'hamming'/'hermite'/'kaiser'/'quadric'/'catrom'/'gaussian'/'bessel'/'mitchell'/'sinc'/'lanczos'

#实例:
>>> x=np.array([[3,4,1],[5,6,2],[8,9,4]])
>>> plt.imshow(x)
<matplotlib.image.AxesImage object at 0x0000014F0095A430>
>>> plt.colorbar()
<matplotlib.colorbar.Colorbar object at 0x0000014F00037670>
>>> plt.show()#结果见下图

在这里插入图片描述

#还可用来绘制图像:
>>> i=PIL.Image.open("E:\\Pictures\\aaa.jfif")
>>> x=np.array(i)
>>> plt.imshow(x)
<matplotlib.image.AxesImage object at 0x0000014F009A2CD0>
>>> plt.show()#结果见下图

在这里插入图片描述
6.绘制箱线图:

matplotlib.pyplot.boxplot(<x>[,notch=False,sym=None,vert=True,whis=1.5,positions=None,widths=None,patch_artist=False,bootstrap=None,usermedians=None,conf_intervals=None,meanline=False,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None,manage_ticks=True,autorange=False,zorder=2,data=None])
  #参数说明:
    x:指定数据;为array/sequence
    sym:指定异常值的标记;str
    whis:指定须(whisker)的长度;float/(float,float)
      #若为float,IQR=Q3-Q1,UR=Q3+whis*IQR,DR=Q1-whis*IQR,超出该范围的值会被视为异常值
      #为float,则<x>中<whis>[0]%~<whis>[1]%以外的数据会被视为异常值(如(0,100)表示均不视为异常值)
    labels:指定每个箱线图的标签;为sequence
      #需在1个axes中绘制多个箱线图时使用

#实例:
>>> import matplotlib.pyplot as plt
>>> plt.boxplot([1,3,24,2,2,34,1,4,34,2,5,23,4,2,4,23,23,42,4,2])
{'whiskers': [<matplotlib.lines.Line2D object at 0x000002665FAAB0D0>, <matplotlib.lines.Line2D object at 0x000002665FAAB130>], 'caps': [<matplotlib.lines.Line2D object at 0x000002665FAAE2E0>, <matplotlib.lines.Line2D object at 0x000002665FAAE640>], 'boxes': [<matplotlib.lines.Line2D object at 0x000002665FAAB0A0>], 'medians': [<matplotlib.lines.Line2D object at 0x000002665FAAE9A0>], 'fliers': [<matplotlib.lines.Line2D object at 0x000002665FAAED00>], 'means': []}
>>> plt.show()#结果见下图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值