用python做三维图(数模整理1)

数模比赛结束啦,在这里整理一下自己当时的代码。今天先分享怎么用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 结果图

结果图还挺好看的,嘻嘻。
用python做三维图(数模整理1)_第1张图片
注:当时是有参考某位博主的代码的,但是比赛后把全部收藏链接都清理了,所以如果博主看到可以联系我哦,小女谢过您的代码,

你可能感兴趣的:(python)