python 用 matplotlib 繪制 南丁格玫瑰圖步驟詳解


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

圖形效果:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM