Matplotlib繪製雷達圖和三維圖的示例程式碼
阿新 • • 發佈:2020-01-09
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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。