1. 程式人生 > 程式設計 >Matplotlib繪製雷達圖和三維圖的示例程式碼

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,85,45,70]
plt.polar(theta*np.pi,r,100)
plt.show()
 
'''4.連結極座標點'''
import numpy as np
import matplotlib.pyplot as plt
theta = np.array([0.25,'ro-',lw=2)
plt.ylim(0,100)
plt.show()
 
'''5.閉合連結極座標點'''
import numpy as np
import matplotlib.pyplot as plt
# 只需在末尾新增一個和起始點重合的點
theta = np.array([0.25,2,0.25])
r = [75,75]
plt.polar(theta*np.pi,100)
plt.show()
 
'''6.填充顏色'''
import numpy as np
import matplotlib.pyplot as plt
# 只需在末尾新增一個和起始點重合的點
theta = np.array([0.25,lw=2)
plt.fill(theta*np.pi,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,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,10)
y = np.random.randint(0,10)
z = 80*abs(np.sin(x+y))
 
ax = plt.subplot(projection='3d')
 
for xx,yy,zz in zip(x,z):
  color = np.random.random(3)
  ax.bar3d(xx,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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。