theta = np.linspace(0.0, 2 * np.pi, N , endpoint=False)
这是一个生成圆形上的点的代码。np.linspace(0.0, 2 * np.pi, N , endpoint=False)
生成了从 0 0 0到 2 π 2π 2π,共N个等差数列的数字,不包含2π,这些数字将被用来表示圆上的每一个点的极角(弧度制)。
ax = plt.subplot(111,projection='polar')
这行代码是创建了一个极坐标系子图,把整个图分为1行1列,这个子图占据整个图的全部空间(111)。projection='polar'
用于指定子图的投影方式为极坐标系。
bars = ax.bar(theta,radii,width=width,bottom=0.0)
这一行代码中,ax.bar()
函数是在创建一个极径图形,其中:
此函数返回一个 bar 对象的数组,每个扇形都被创建为一个单独的 bar 对象。
bar.set_facecolor(plt.cm.viridis(r / 10.))
这行代码是在设置柱状图的颜色。其中 bar
是某个柱状图,plt.cm.viridis
是一种颜色映射(colormap),r / 10.
表示映射的颜色的程度。将 r / 10.
代入颜色映射函数得到的颜色,最后用 set_facecolor
函数设置给柱状图的颜色。
为什么10后面会有一个“.”?
这个“.”是用来强制将 r/10 这个表达式结果从整数转换为浮点数的。
bar.set_alpha(0.5)
for r,bar in zip(radii,bars):
bar.set_facecolor(plt.cm.viridis(r / 10))
bar.set_alpha(0.5)
plt.show()
zip()
函数的用法?
zip(radii,bars)
函数将两个序列合并成一个元组列表,并将相同位置的元素组合成一个元组。例如:
radii = [1,2,3,4,5]
bars = ['a','b','c','d','e']
zip(radii,bars) = [(1,'a'), (2,'b'), (3,'c'), (4,'d'), (5,'e')]
bar.set_alpha(0.5)
set_alpha()
是matplotlib中设置图形透明度的函数。透明度是0~1之间的数字,0表示完全透明,1表示完全不透明。
import numpy as np
import matplotlib.pyplot as plt
N = 20
theta = np.linspace(0.0, 2 * np.pi, N , endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi /8 * np.random.rand(N)
ax = plt.subplot(111,projection='polar')
bars = ax.bar(theta,radii,width=width,bottom=0)
for r,bar in zip(radii,bars):
bar.set_facecolor(plt.cm.viridis(r / 10))
bar.set_alpha(0.5)
plt.show()