Matplotlib繪製雷達圖和三維圖

1.雷達圖

程序示例

'''1.空白極座標圖'''
import matplotlib.pyplot as plt

plt.polar()
plt.show()

'''2.繪製一個極座標點'''
import numpy as np
import matplotlib.pyplot as plt
# 極座標(0.25*pi,20)
plt.polar(0.25*np.pi, 20, 'ro', lw=2)   # 'ro'紅色圓點
plt.ylim(0,50)
plt.show()

'''3.繪製多個極座標點'''
import numpy as np
import matplotlib.pyplot as plt
theta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2])
r = [75,60,50,70,50,85,45,70]
plt.polar(theta*np.pi, r, 'ro', lw=2)   # 'ro'紅色圓點
plt.ylim(0,100)
plt.show()

'''4.鏈接極座標點'''
import numpy as np
import matplotlib.pyplot as plt
theta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2])
r = [75,60,50,70,50,85,45,70]
plt.polar(theta*np.pi, r, 'ro-', lw=2)
plt.ylim(0,100)
plt.show()

'''5.閉合鏈接極座標點'''
import numpy as np
import matplotlib.pyplot as plt
# 只需在末尾添加一個和起始點重合的點
theta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2,0.25])
r = [75,60,50,70,50,85,45,70, 75]
plt.polar(theta*np.pi, r, 'ro-', lw=2)
plt.ylim(0,100)
plt.show()

'''6.填充顏色'''
import numpy as np
import matplotlib.pyplot as plt
# 只需在末尾添加一個和起始點重合的點
theta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2,0.25])
r = [75,60,50,70,50,85,45,70, 75]
plt.polar(theta*np.pi, r, 'ro-', lw=2)
plt.fill(theta*np.pi, r, facecolor='r', alpha=0.5)  # 填充
plt.ylim(0,100)
plt.show()

'''7.繪製成績雷達圖'''
import numpy as np
import matplotlib.pyplot as plt

courses = ['C++', 'Python', 'Java', 'C', 'C#', 'Go', 'Matlab']
scores = [82,100,90,78,40,66,88]

datalength = len(scores)
angles = np.linspace(0, 2*np.pi, datalength, endpoint=False)    # 均分極座標

scores.append(scores[0])    # 在末尾添加第一個值,保證曲線閉合
angles = np.append(angles, angles[0])

plt.polar(angles, scores, 'rv-', lw=2)
plt.thetagrids(angles*180/np.pi, courses, fontproperties='simhei')
plt.fill(angles, scores, facecolor='r', alpha=0.4)
 

 2.三維圖

 

程序示例

'''1.繪製三維曲線,並設置圖例字號'''
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import matplotlib.font_manager as fm
from mpl_toolkits.mplot3d import Axes3D # 不可缺少

fig = plt.figure()
ax = fig.gca(projection='3d')   # 設置圖像屬性

# 測試數據
theta = np.linspace(-4 * np.pi, 4*np.pi, 100)
z = np.linspace(-4,4,100) * 0.3
r = z**4 + 1
x = r*np.sin(theta)
y = r*np.cos(theta)

ax.plot(x,y,z,'b^-', label='3D 測試曲線')
# 設置圖例的字體,字號
font = fm.FontProperties('simhei')
mpl.rcParams['legend.fontsize'] = 10
ax.legend(prop=font)

plt.show()

'''2.繪製三維柱狀圖,並每個柱子顏色隨機'''
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d

x = np.random.randint(0,40,10)
y = np.random.randint(0,40,10)
z = 80*abs(np.sin(x+y))

ax = plt.subplot(projection='3d')

for xx, yy, zz in zip(x,y,z):
    color = np.random.random(3)
    ax.bar3d(xx, yy, 0, dx=1, dy=1, dz=zz, color=color)

ax.set_xlabel('X軸', fontproperties='simhei')
ax.set_ylabel('Y軸', fontproperties='simhei')
ax.set_zlabel('Z軸', fontproperties='simhei')

plt.show()

參考:讀芯術python課程學習

發佈了46 篇原創文章 · 獲贊 49 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章