欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用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 结果图

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

相关标签: python 3D图