python (matplotlib)画三维图像

文章目录

      • 1 三维图
      • 2 三维等高线
      • 3 二维等高线
      • 4 三维表面图上画曲线
      • 5 三维曲线投影到坐标轴

关于三维图像的内容很多博友已经写了
推荐: 三维绘图, 画三维图, 3d图-英文版, 中文版三维图
上面写的都非常详细,很推荐,特别是英文版和中文版三维图那个,基于此,只给我写的一个例子

1 三维图

f ( x , y ) = x 2 + y 2 f(x,y)=x^2+y^2 f(x,y)=x2+y2的三维图
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dx = np.arange(-10,10,0.2)
y = np.arange(-10,10,0.2)
f_x_y=np.power(x,2)+np.power(y,2)
fig = plt.figure()
ax = plt.gca(projection='3d')
ax.plot(x,y,f_x_y)

画出2维不相关高斯分布的3维图,即下面公式中n=2的情况
在这里插入图片描述
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
from mpl_toolkits.mplot3d import Axes3D #画三维图不可少
from matplotlib import cm  #cm 是colormap的简写# 1_dimension gaussian function
def gaussian(x,mu,sigma):f_x = 1/(sigma*np.sqrt(2*np.pi))*np.exp(-np.power(x-mu, 2.)/(2*np.power(sigma,2.)))return(f_x)# 2_dimension gaussian function
def gaussian_2(x,y,mu_x,mu_y,sigma_x,sigma_y):f_x_y = 1/(sigma_x*sigma_y*(np.sqrt(2*np.pi))**2)*np.exp(-np.power\(x-mu_x, 2.)/(2*np.power(sigma_x,2.))-np.power(y-mu_y, 2.)/\(2*np.power(sigma_y,2.)))return(f_x_y)#设置2维表格
x_values = np.linspace(-5,5,2000)
y_values = np.linspace(-5,5,2000)
X,Y = np.meshgrid(x_values,y_values)
#高斯函数
mu_x,mu_y,sigma_x,sigma_y = 0,0,0.8,0.8
F_x_y = gaussian_2(X,Y,mu_x,mu_y,sigma_x,sigma_y)
#显示三维图
fig = plt.figure()
ax = plt.gca(projection='3d')
ax.plot_surface(X,Y,F_x_y,cmap='jet')
# 显示等高线图
#ax.contour3D(X,Y,F_x_y,50,cmap='jet')

2 三维等高线

将上面等高线打开,三维图注释掉

#ax.plot_surface(X,Y,F_x_y,cmap='jet')
# 显示等高线图
ax.contour3D(X,Y,F_x_y,50,cmap='jet')

在这里插入图片描述

3 二维等高线

将上面的图截取截面就是2维平面,是一个个圆形
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
from mpl_toolkits.mplot3d import Axes3D #画三维图不可少
from matplotlib import cm  #cm 是colormap的简写#定义坐标轴函数
def setup_axes(fig, rect):ax = axisartist.Subplot(fig, rect)fig.add_axes(ax)ax.set_ylim(-4, 4)#自定义刻度
#    ax.set_yticks([-10, 0,9])ax.set_xlim(-4,4)ax.axis[:].set_visible(False)#第2条线,即y轴,经过x=0的点ax.axis["y"] = ax.new_floating_axis(1, 0)ax.axis["y"].set_axisline_style("-|>", size=1.5)
#    第一条线,x轴,经过y=0的点ax.axis["x"] = ax.new_floating_axis(0, 0)ax.axis["x"].set_axisline_style("-|>", size=1.5)return(ax)
# 1_dimension gaussian function
def gaussian(x,mu,sigma):f_x = 1/(sigma*np.sqrt(2*np.pi))*np.exp(-np.power(x-mu, 2.)/(2*np.power(sigma,2.)))return(f_x)# 2_dimension gaussian function
def gaussian_2(x,y,mu_x,mu_y,sigma_x,sigma_y):f_x_y = 1/(sigma_x*sigma_y*(np.sqrt(2*np.pi))**2)*np.exp(-np.power\(x-mu_x, 2.)/(2*np.power(sigma_x,2.))-np.power(y-mu_y, 2.)/\(2*np.power(sigma_y,2.)))return(f_x_y)#设置画布
fig = plt.figure(figsize=(8, 8)) #建议可以直接plt.figure()不定义大小
ax1 = setup_axes(fig, 111)
ax1.axis["x"].set_axis_direction("bottom")
ax1.axis['y'].set_axis_direction('right')
#在已经定义好的画布上加入高斯函数
x_values = np.linspace(-5,5,2000)
y_values = np.linspace(-5,5,2000)
X,Y = np.meshgrid(x_values,y_values)
mu_x,mu_y,sigma_x,sigma_y = 0,0,0.8,0.8
F_x_y = gaussian_2(X,Y,mu_x,mu_y,sigma_x,sigma_y)
#显示三维图
#fig = plt.figure()
#ax = plt.gca(projection='3d')
#ax.plot_surface(X,Y,F_x_y,cmap='jet')
# 显示3d等高线图
#ax.contour3D(X,Y,F_x_y,50,cmap='jet')
# 显示2d等高线图,画8条线
plt.contour(X,Y,F_x_y,8)

4 三维表面图上画曲线

fig = plt.figure()
ax = fig.gca(projection='3d')
temp_test = np.squeeze(temp[:,0,:,:])
Lat,Lon = np.meshgrid(lat,lon)
# Temp = np.zeros((lat.size,lon.size))
Temp = temp_test[0]    #first hour
surf = ax.plot_surface(Lat,Lon,Temp) 
fig.colorbar=(surf)  #画表面图
ax.plot(lat_new, lon_new, t_interp,linewidth=10,color='r')  #画曲线plt.show()

由于我的值结果范围太小,看不出来,这条曲线是在表面上画一个环
在这里插入图片描述
在这里插入图片描述

5 三维曲线投影到坐标轴

由于三维曲面投影到坐标轴已经有了答案,在一开始我给的链接或者官网都有,如下:
在这里插入图片描述
(代码可以点开始给的链接进入查看)
但是三维 曲 线 曲线 线的投影还没有给,所以这里通过查找一番之后总结如下(参考python,matlab)
以下我使用的是python

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
#输入经纬度和海拔值(也就是x,y,z)
ax.plot(lat_new, lon_new, temp_list[layer], linewidth=10, color='r')plt.show()

在这里插入图片描述
现在要将这个图投影到x-z坐标面上

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(lat_new, lon_new, temp_list[layer], linewidth=10, color='r')
null = [30]*len(lat_new)  #在y=30处的面ax.plot(null, lon_new, temp_list[layer])
# ax.plot(lat_new,null, temp_list[layer])
# ax.plot(lat_new, lon_new, null)plt.show()

在这里插入图片描述
同时在三个面上投影

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(lat_new, lon_new, temp_list[layer], linewidth=10, color='r')
#至于要在多大的值上投影,可以自己测试找到最合适的
x_z = [min(lat_new)-0.5]*len(lat_new)
y_z = [max(lon_new)+0.5]*len(lon_new)
x_y = [min(temp_list[layer])-0.5]*len(temp_list[layer])ax.plot(x_z, lon_new, temp_list[layer])
ax.plot(lat_new, y_z, temp_list[layer])
ax.plot(lat_new, lon_new, x_y)plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45971.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab绘图(三)绘制三维图像

目录 一、绘制三维曲线 二、绘制三维曲面 1.meshgrid函数 2.mesh和surf函数 一、绘制三维曲线 1.最基本的绘制三维曲线的函数—plot3 plot3(x1,y1,z1, 选项 1,x2,y2,z2, 选项 2,…, xn,yn,zn , 选项 n) 其中,每一组 x , y , z 组成一组曲线…

PyOpenGL三体模拟

给定多星系统的初始状态,以一定的时间步,计算在引力作用下的星体运动,并使用openGL实时可视化。 实验环境 python37OpenGL https://www.cnblogs.com/GraceSkyer/p/9235582.html numpy PIL 初始条件 使用一个数组p表示多星系统的初始条件…

使用python进行字频统计和词频统计

问题描述 读取给定的语料库,根据制表符’\t’划分其文本与标签,将获得的文本仅保留汉字部分,并按字划分,保存在列表中,至少使用一种方法,统计所有汉字的出现次数,并按照从高到低的顺序排序&…

Imagenet VGG-19图片识别实例展示

资源: 1.相关的vgg模型下载网址 http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat 2.ImageNet 1000种分类以及排列 https://github.com/sh1r0/caffe-Android-demo/blob/master/app/src/main/assets/synset_words.txt(如果…

外滩画报:揭秘全球电子垃圾坟墓

在西方发达国家,有这样一个不为人知的秘密:当你把电子垃圾送给回收商而不是扔进垃圾箱里后,很快,大约 80% 的电子垃圾就会被装上集装箱船,运往尼日利亚、印度、巴基斯坦和中国那些常年被毒烟笼罩的垃圾场。师从人道主义…

《荒野猎人》影评

如果没有小李子和奥斯卡数十年相爱相杀赚足眼球这件事,《荒野猎人》最大的看点应该是导演亚利桑德罗冈萨雷斯伊纳里图和摄影师艾曼努尔卢贝兹基的再度合作。 伊纳里图的电影履历如晴朗夏夜的星空一般漂亮璀璨,执导座《爱情是狗娘》一举拿下2000年东京国际…

印度之行(一) 印度是个很大的国家

(baidu真渣。。。) 首先,我们弄清了,老王吃了一个月咖喱的地方,下面是老王的咖喱味思考: 在印度浦内市(又译浦那市)待了5周,基本是在公司的浦内office做项目,…

HTML标签

HTML标签友情链接 如果在 HTML 中需要文字或者图片垂直居中时&#xff0c;可以使用 align "center"&#xff0c;可以对文字或着图片进行垂直居中&#xff01; 这是一个很好的例子&#xff1a; <!doctype html> <html lang"en"> <head&…

苏州免费景点

文章目录 苏州免费景点姑苏区相门古城墙平江历史街区曲园畅园七里山塘朴园五峰园拥翠山庄天香小筑明轩实样北寺塔定慧寺城隍庙神仙庙苏州博物馆忠王府苏州民俗博物馆中国昆曲博物馆苏州公园桂花公园桐泾公园 吴中区沐春园(原园博会苏州园)瑞园道勤小筑乡畦小筑石湖风景区灵岩山…

又一个程序员被判刑了!运维违规操作被判5年半,IT从业需要懂法律!

点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Sleeping is nice. You forget about everything for a little while. 还是睡觉好&#xff0c;能暂时忘掉一切烦恼。 每日掏心话 人生如梦&#xff0c;岁月匆匆&#x…

又背锅了,一个“锁表” 损失 800万,程序员被判5年半

图片来自 Pexels 出处&#xff1a;云头条&#xff0c;知乎综合整理, 51CTO 链接&#xff1a;https://www.zhihu.com/question/389167387/answer/1170852426 近日&#xff0c;云头条发布的“一个违规操作、损失 800 万、被判五年半&#xff1a;运维夏某某致郑大一附院智慧医院系…

一个“锁表”损失800万,运维被判5年半

“ 近日&#xff0c;云头条发布的“一个违规操作、损失 800 万、被判五年半&#xff1a;运维夏某某致郑大一附院智慧医院系统瘫痪 2 个小时&#xff0c;判破坏计算机信息系统罪”一文引发了技术圈的热议。 图片来自 Pexels 事件经过 夏某某任职北京中科某某科技有限公司&#x…

大运河的一些总结

京杭大运河&#xff0c;是一条承载着历史&#xff0c;流淌着过去和未来的河流&#xff0c;是我非常喜欢的一条人工河&#xff0c;但一直以来不太清楚其具体分段和水流流向&#xff0c;近期通过了解南水北调东线工程&#xff0c;并经过查阅资料终于弄清楚了京杭大运河的各个河段…

科技周刊第六期:接近本质的东西才会长远

这里记录每周值得分享的东西&#xff0c;每周五发布。 封面图 中国西南西藏自治区山南市扎南县的雅鲁藏布江&#xff08;出处&#xff09; 本周话题&#xff1a;接近本质的东西才会长远 我想说三个现象&#xff1a; 1、为什么很多明星能够一直红下去&#xff1f;而有的明星只…

python调用mysql并在前台做数据展示

今天是学习python的第二天。 根据自己的需要&#xff0c;将前段时间的扇形图稍微升华一下&#xff0c;从而可以从mysql数据库中查询数据&#xff0c;并作图形的展示。 以下为图形展示&#xff1a; #导入库--注意本段代码不适用于python2 import pymysql import matplotlib.py…

中国农民丰收节交易会暨“日照有礼”功能性特色产品展示

中国农民丰收节交易会暨“日照有礼”功能性特色产品展示 齐鲁网闪电新闻讯 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 万赢信采编&#xff1a;为庆祝农民丰收节&#xff0c;进一步推动日照乡村振兴建设步伐&#xff0c;倡导功能性农业农业…

C++ STL的简单运用——学习记录

本周学了一下STL&#xff0c;学的内容有string&#xff0c;stack&#xff0c;queue&#xff0c;vector&#xff0c;priority queue&#xff0c;map&#xff0c;set与其简单应用&#xff0c; 速度比较快&#xff0c;&#xff0c;还好学之前我预习了一些&#xff0c;&#xff0c;…

ArcGIS水文分析实战教程(12)河网分级流程

ArcGIS水文分析实战教程(12)河网分级流程 本章导读&#xff1a;如果说河流提取是面对没有数据后者数据匮乏的用户&#xff0c;那么河网分级就完全属于为水文研究而生的一个工具。河流具有干流和支流之分&#xff0c;河网分级能够将这些干支关系理顺&#xff0c;并从中找到其水文…

[论文总结] 深度学习在农业领域应用论文笔记2

文章目录 1. A comparative study of fruit detection and counting methods for yield mapping in apple orchards &#xff08;IF3.581, 2019&#xff09;1.1 介绍1.2 实验与结果1.3 定性结果1.4 失败案例1.4.1 检测1.4.2 计数 1.5 结论与未来工作 2.Wheat crop yield predic…

Java 反射慢?它到底慢在哪?

往期热门文章&#xff1a; 1、GitHub 被超火的 ChatGPT 霸榜&#xff01; 2、Java使用 try catch会影响性能&#xff1f; 3、原来count(*)是接口性能差的真凶&#xff01; 4、大公司病了&#xff0c;这也太形象了吧&#xff01;&#xff01;&#xff01; 5、全球最大资源站创始…