polar函数--Matplotlib
绘制雷达图polar()函数--matplotlib
·
1. polar函数–绘制极区图
1.1 函数功能:
Make a polar plot: 绘制极线图
1.2 函数语法:
polar(theta, r, **kwargs)
1.3 函数参数:
| 参数 | 含义 |
|---|---|
| theta | 每个标记所在射线与极径的夹角 |
| r | 每个标记到原点的距离 |
| marker | 标记点样式 |
| markersize(ms) | 标记点的大小 |
| markerfacecolor(mfc) | 标记点的填充颜色 |
| markeredgecolor(mec) | 标记点的边界颜色 |
| color | 线条颜色 |
| linestyle(ls) | ls=‘None’: 线条不显示 |
| linewidth(lw) | 线条粗细 |
其他关键字参数:

默认绘制折线图
import matplotlib.pyplot as plt
import numpy as np
barSlices = 12
theta = np.linspace(0.0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r)
plt.show()

当将线去掉,并不会仅显示产生的标记点。
import matplotlib.pyplot as plt
import numpy as np
barSlices = 12
theta = np.linspace(0.0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r, linestyle='None')
plt.show()

通过参数 m a r k e r marker marker将数据标识出来
import matplotlib.pyplot as plt
import numpy as np
barSlices = 12
theta = np.linspace(0.0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r, linestyle='None', marker='*')
plt.show()

设置参数 m a r k e r f a c e c o l o r ( m f c ) markerfacecolor(mfc) markerfacecolor(mfc)改变标识的填充颜色
import matplotlib.pyplot as plt
import numpy as np
barSlices = 12
theta = np.linspace(0.0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r, linestyle='None', marker='*',
markerfacecolor='r')
plt.show()

通过参数 m a r k e r s i z e ( m s ) markersize(ms) markersize(ms)改变标识大小
import matplotlib.pyplot as plt
import numpy as np
barSlices = 12
theta = np.linspace(0.0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r, linestyle='None', marker='*',
markerfacecolor='r', markersize=10)
plt.show()

将标识以虚线连接,参数 l i n e s t y l e = ′ − − ′ linestyle='--' linestyle=′−−′
import matplotlib.pyplot as plt
import numpy as np
barSlices = 12
theta = np.linspace(0.0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r, linestyle='--', marker='*',
markerfacecolor='r', markersize=10)
plt.show()

2. 雷达图
若要绘制雷达图,需要将上述图形改进: 极线图中第一个数据标记与最后一个数据标记之间没有形成闭环,若要形成闭环,可以将第一个数据标记与最后一个数据标记重合实现。
实现闭合在实际数据中可以使用np.concatenate()函数
2.1 实现收尾相连效果
2.1.1 concatenate()函数
参见Numpy模块中的concatenate()函数
2.1.2 代码示例
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
theta = np.arange(0, 2.1 * np.pi, np.pi / 4)
r = [2, 3, 2, 5, 3, 4, 2, 5, 2]
plt.polar(theta, r, marker='o', ms=10, mfc='r', mec='g',
color='y', ls='--', lw=2)
plt.show()

2.2 改变标记点所在射线的标签
使用 thetagrids() 函数,改变极区图中不同射线处的标签
2.2.1 函数功能
改变极区图中不同标记点所在射线处的标签
2.2.2 函数语法
matplotlib.pyplot.thetagrids(angles=None, labels=None, fmt=None, **kwargs)
2.2.3 函数参数与示例
| 参数 | 含义 |
|---|---|
| angles | 标记点所在射线的角度,按角度制 |
| labels | 标记点所在射线的标签 |
| fontsize | 标签字体大小 |
| color | 标签字体颜色 |
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
theta = np.arange(0, 2.1 * np.pi, np.pi / 4)
r = [2, 3, 2, 5, 3, 4, 2, 5, 2]
plt.polar(theta, r, marker='o', ms=10, mfc='r', mec='g',
color='y', ls='--', lw=2)
plt.thetagrids(angles=(np.arange(0, 360, 45)),
labels=['市场调查', '运营分析', 'python', '数据库',
'毛概', '体育', '经济学', '统计学'],
fontsize=12, color='r')
plt.show()

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
theta = np.arange(0, 2.1 * np.pi, np.pi / 4)
r = [2, 3, 2, 5, 3, 4, 2, 5, 2]
plt.polar(theta, r, marker='o', ms=10, mfc='r', mec='g',
color='y', ls='--', lw=2)
plt.thetagrids(angles=(np.arange(0, 360, 45)),
labels=['市场调查', '运营分析', 'python', '数据库',
'毛概', '体育', '经济学', '统计学'],
fontsize=12, color='r')
for i, j in zip(theta[0:-1], r[0:-1]):
plt.text(i - 0.1, j + 0.5, j, color='k', fontweight='bold',
fontsize=10, bbox=dict(boxstyle='round',
facecolor='y', alpha=0.4))
plt.ylim(0, 6)
plt.show()

2.3 填充颜色
2.3.1 函数功能
填充绘制的多边形
2.3.2 函数语法
matplotlib.pyplot.fill(*args, data=None, **kwargs)
2.3.3 函数参数与示例
| 参数 | 含义 |
|---|---|
| x,y | 要填充颜色的多边形数据 |
| color | 要填充的颜色 |
| alpha | 填充颜色的透明度 |
# import matplotlib.pyplot as plt
# import numpy as np
# import matplotlib as mpl
#
# mpl.rcParams['font.sans-serif'] = ['KaiTi']
# mpl.rcParams['axes.unicode_minus'] = False
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
theta = np.arange(0, 2.1 * np.pi, np.pi / 4)
r = [2, 3, 2, 5, 3, 4, 2, 5, 2]
plt.polar(theta, r, marker='o', ms=10, mfc='r', mec='g',
color='y', ls='--', lw=2)
plt.thetagrids(angles=(np.arange(0, 360, 45)),
labels=['市场调查', '运营分析', 'python', '数据库',
'毛概', '体育', '经济学', '统计学'],
fontsize=12, color='r')
for i, j in zip(theta[0:-1], r[0:-1]):
plt.text(i - 0.1, j + 0.5, j, color='k', fontweight='bold',
fontsize=10, bbox=dict(boxstyle='round',
facecolor='y', alpha=0.4))
plt.fill(theta, r, color='y', alpha=0.3)
plt.ylim(0, 6)
plt.show()

官方文档: polar函数
更多推荐



所有评论(0)