數模比賽結束啦,在這裏整理一下自己當時的代碼。今天先分享怎麼用python畫三維圖。
任務簡介:繪製加拿大不同地區(province)不同時間(year)的溫度(temperature)變化圖,不多說直接上代碼。
1 導入相關庫
#導入庫
import numpy as np #多維數組必備庫
import matplotlib.pyplot as plt #繪圖必備
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D #3D圖必備
import pandas as pd #數據處理必備
import seaborn as sns #好看的圖必備
2 讀取相關數據
#讀取相關數據
plt.rcParams['figure.figsize'] = (12, 7)
x = [i for i in range(0,11)] # 10個城市
y = [i for i in range(2008,2019)] #年份
z =np.array( t_mean_new["temperature"].tolist()) #加拿大每年各地區平均溫度
3 修改數據結構
因爲不清楚三維圖對於輸入的形式有什麼結構要求,當時這裏花了好長時間。三維圖肯定是三維數組啦!!!
xx1, yy1 = np.meshgrid(x, y)
newshape = (xx1.shape[0])*(xx1.shape[0])
y_input = yy1.reshape(newshape)
x_input = xx1.reshape(newshape)
z_input = z.reshape(newshape)
4 作圖
sns.set(style='white')
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(x_input,y_input,z_input,cmap='rainbow') #cmap選擇rainbow會很好看,五彩斑斕
#添加三個座標系的標籤
ax.set_ylabel('Year',fontsize = 16)
ax.set_xlabel('Province',fontsize = 16)
ax.set_zlabel('Temperature',fontsize = 16)
#保存圖片
plt.savefig('Canada3D.png', dpi=300)
#顯示
plt.show()
5 結果圖
結果圖還挺好看的,嘻嘻。
注:當時是有參考某位博主的代碼的,但是比賽後把全部收藏鏈接都清理了,所以如果博主看到可以聯繫我哦,小女謝過您的代碼,🙂