用python做三维图(数模整理1)
程序员文章站
2022-03-20 11:41:21
...
数模比赛结束啦,在这里整理一下自己当时的代码。今天先分享怎么用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 结果图
结果图还挺好看的,嘻嘻。
注:当时是有参考某位博主的代码的,但是比赛后把全部收藏链接都清理了,所以如果博主看到可以联系我哦,小女谢过您的代码,????
推荐阅读