0、import
import string import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt
1、極坐標系
# 設置畫布
fig = plt.figure(figsize=(12, 8), # 畫布尺寸
facecolor='lightyellow' # 畫布背景色
) # 設置極坐標系
ax = plt.axes(polar=True) # 實例化極坐標系
ax.set_theta_direction(-1) # 順時針為極坐標正方向
ax.set_theta_zero_location('N') # 極坐標 0° 方向為 N
效果:
2、添加數據繪制極條圖
data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573, 323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373] theta = np.linspace(0, 2*np.pi, len(data)) # 等分極坐標系
# 設置畫布
fig = plt.figure(figsize=(12, 8), # 畫布尺寸
facecolor='lightyellow' # 畫布背景色
) # 設置極坐標系
ax = plt.axes(polar=True) # 實例化極坐標系
ax.set_theta_direction(-1) # 順時針為極坐標正方向
ax.set_theta_zero_location('N') # 極坐標 0° 方向為 N
# 在極坐標系中畫柱形圖
ax.bar(x=theta, # 柱體的角度坐標
height=data, # 柱體的高度, 半徑坐標
width=0.33, # 柱體的寬度
);
效果:
3、對數據排序、添加顏色映射生成南丁格玫瑰圖
data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573, 323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373] data.sort() theta = np.linspace(0, 2*np.pi, len(data)) # 等分極坐標系
# 設置畫布
fig = plt.figure(figsize=(12, 8), # 畫布尺寸
facecolor='lightyellow' # 畫布背景色
) # 設置極坐標系
ax = plt.axes(polar=True) # 實例化極坐標系
ax.set_theta_direction(-1) # 順時針為極坐標正方向
ax.set_theta_zero_location('N') # 極坐標 0° 方向為 N
# 在極坐標系中畫柱形圖
ax.bar(x=theta, # 柱體的角度坐標
height=data, # 柱體的高度, 半徑坐標
width=0.33, # 柱體的寬度
color=np.random.random((len(data),3)) );
圖形效果:
4、挖空中心、添加數據標注、關閉坐標軸和網格完成南丁格玫瑰圖
data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573, 323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373] data.sort() theta = np.linspace(0, 2*np.pi, len(data)) # 等分極坐標系
# 設置畫布
fig = plt.figure(figsize=(12, 8), # 畫布尺寸
facecolor='lightyellow' # 畫布背景色
) # 設置極坐標系
ax = plt.axes(polar=True) # 實例化極坐標系
ax.set_theta_direction(-1) # 順時針為極坐標正方向
ax.set_theta_zero_location('N') # 極坐標 0° 方向為 N
# 在極坐標系中畫柱形圖
ax.bar(x=theta, # 柱體的角度坐標
height=data, # 柱體的高度, 半徑坐標
width=0.33, # 柱體的寬度
color=np.random.random((len(data_list),3)) ) ## 繪制中心空白
ax.bar(x=theta, # 柱體的角度坐標
height=130, # 柱體的高度, 半徑坐標
width=0.33, # 柱體的寬度
color='white' ) # 添加數據標注
for angle, data, lab in zip(theta, data_list, labs): ax.text(angle+0.03, data+100, str(data) ) ax.set_axis_off();
圖形效果: