python-matplotlib(二)3D图形绘制

一、绘制线形图

Axes3D.plot 函数用来绘制线形图。

import matplotlib.pyplot as plt
import numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')x = np.linspace(-10, 10, 1000)
y = np.linspace(-10, 10, 1000)
z = np.add(x, y)ax.plot(x, y, z)
plt.show()

在这里插入图片描述

二、散点图

Axes3D.scatter 函数用来绘制散点图。

import matplotlib.pyplot as plt
import numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')count = 100
range1 = 100xs = np.random.rand(count) * range1
ys = np.random.rand(count) * range1
zs = np.random.rand(count) * range1ax.scatter(xs, ys, zs, s=zs, c=zs)ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')plt.show()

在这里插入图片描述

三、线框图

Axes3D.plot_wireframe 函数用来绘制线框图。

# meshgrid_demo.pyimport numpy as npx = np.arange(1, 4)
y = np.arange(11, 16)
print(x)
print(y)X, Y = np.meshgrid(x, y)
print(X)
print(Y)
[1 2 3]
[11 12 13 14 15]
[[1 2 3][1 2 3][1 2 3][1 2 3][1 2 3]]
[[11 11 11][12 12 12][13 13 13][14 14 14][15 15 15]]
import matplotlib.pyplot as plt
import numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')x = np.arange(-10, 10, 0.1)
y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(x, y)Z = np.add(-np.power(X, 3), np.power(Y, 4))surf = ax.plot_wireframe(X, Y, Z)plt.show()

在这里插入图片描述

四、曲面图

Axes3D.plot_surface 函数用来绘制曲面图。

import matplotlib.pyplot as plt
import numpy as npfrom matplotlib import cm
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')x = np.arange(-10, 10, 0.1)
y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(x, y)Z = np.add(-np.power(X, 3), np.power(Y, 2))surf = ax.plot_surface(X, Y, Z, cmap=cm.gist_rainbow)
fig.colorbar(surf, shrink=0.5, aspect=5)plt.show()

在这里插入图片描述

五、等高线

Axes3D.contour 函数用来绘制等高线。

import matplotlib.pyplot as plt
import numpy as npfrom matplotlib import cm
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')x = np.arange(-10, 10, 0.1)
y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(x, y)Z = np.add(-np.power(X, 4), np.power(Y, 4))ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.plot_wireframe(X, Y, Z, alpha=0.1)
ax.contour(X, Y, Z, cmap=cm.Accent, linewidths=2)plt.show()

在这里插入图片描述

六、柱状图

Axes3D.bar 函数用来绘制柱状图。

import matplotlib.pyplot as plt
import numpy as npfrom matplotlib.collections import PolyCollection
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')np.random.seed(59)
month = np.arange(1, 12)
years = [2016, 2017, 2018, 2019]def get_color(value_array):color = []for v in value_array:if (v < 50):color.append('y')elif (v < 100):color.append('g')elif (v < 150):color.append('b')elif (v < 200):color.append('c')elif (v < 250):color.append('m')else:color.append('r')return colorfor year, c in zip(years, ['b','c','r','m']):value = np.random.rand(len(month)) * 300ax.bar(month, value, year, zdir='y', color=get_color(value), alpha=0.7)for i in np.arange(0, 12):ax.barax.set_xlabel('Month')
ax.set_xticks(np.arange(1, 13))
ax.set_ylabel('Year')
ax.set_yticks(np.arange(2016, 2020))
ax.set_zlabel('Precipitation')plt.show()

在这里插入图片描述

七、多边形

Axes3D.add_collection3d 函数用来向图形中添加3D集合对象。

import matplotlib.pyplot as plt
import numpy as npfrom matplotlib.collections import PolyCollection
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()
ax = fig.add_subplot(projection='3d')np.random.seed(59)
month = np.arange(0, 13)
years = [2016, 2017, 2018, 2019]precipitation = []
for year in years:value = np.random.rand(len(month)) * 300value[0], value[-1] = 0, 0precipitation.append(list(zip(month, value)))poly = PolyCollection(precipitation, facecolors=['b','c','r','m'])
poly.set_alpha(0.7)ax.add_collection3d(poly, zs=years, zdir='y')
ax.set_xlabel('Month')
ax.set_xlim3d(0, 12)
ax.set_ylabel('Year')
ax.set_ylim3d(2015, 2020)
ax.set_zlabel('Precipitation')
ax.set_zlim3d(0, 300)plt.show()

在这里插入图片描述

八、制作动图

很多时候,我们可能需要制作一张动画图来展示图形的全貌,下面我们就来看一下如何做到。

为了制作动图,我们需要先有制作动图的图片素材。
下面我们就以前面等高线那个函数生成的复杂图形为例,来看看如何生成一个关于这个图形不同角度的动图。
相关代码如下:

import matplotlib.pyplot as plt
import numpy as npfrom matplotlib import cm
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(projection='3d')x = np.arange(-10, 10, 0.1)
y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(x, y)Z = np.add(-np.power(X, 4), np.power(Y, 4))ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.plot_surface(X, Y, Z, cmap=cm.hsv)for angle in range(95, 180, 3):ax.set_zlabel("Angle: " + str(angle))ax.view_init(30, angle)filename = "./pic/" + str(angle) + ".png"plt.savefig(filename)print("Save " + filename + " finish")
Save ./pic/95.png finish
Save ./pic/98.png finish
Save ./pic/101.png finish
Save ./pic/104.png finish
Save ./pic/107.png finish
Save ./pic/110.png finish
Save ./pic/113.png finish
Save ./pic/116.png finish
Save ./pic/119.png finish
Save ./pic/122.png finish
Save ./pic/125.png finish
Save ./pic/128.png finish
Save ./pic/131.png finish
Save ./pic/134.png finish
Save ./pic/137.png finish
Save ./pic/140.png finish
Save ./pic/143.png finish
Save ./pic/146.png finish
Save ./pic/149.png finish
Save ./pic/152.png finish
Save ./pic/155.png finish
Save ./pic/158.png finish
Save ./pic/161.png finish
Save ./pic/164.png finish
Save ./pic/167.png finish
Save ./pic/170.png finish
Save ./pic/173.png finish
Save ./pic/176.png finish
Save ./pic/179.png finish

在这里插入图片描述

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

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

相关文章

MySQL 试图

视图功能在 5.0 以后的版本启用 视图是一张虚表。数据表确实包含了具体数据并且保存到硬盘中的实表。视图使用数据检索语句动态生 成的一张虚表。每一次数据服务重启或者系统重启之后&#xff0c;在数据库服务启动期间&#xff0c;会使用创建视图的语 句重新生成视图中的数据&…

命令模式

命令模式&#xff1a;将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 命令模式的好处&#xff1a; 1、它能较容易地设计一个命令队列&#xff1b; 2、在需要的情况下&a…

VScode插件发布

背景 上期在初涉 VS Code 插件开发-CSDN博客中&#xff0c;通过Yeoman工具创建了第一个插件项目&#xff0c;在helloworld的基础上修改&#xff0c;实现预期的功能后&#xff0c;需要将VScode插件发布到插件市场中使用。 官方文档&#xff1a;Publishing Extensions | Visual…

Spectral Adversarial MixUp for Few-Shot Unsupervised Domain Adaptation论文速读

文章目录 Spectral Adversarial MixUp for Few-Shot Unsupervised Domain Adaptation摘要方法Domain-Distance-Modulated Spectral Sensitivity (DoDiSS&#xff09;模块Sensitivity-Guided Spectral Adversarial Mixup (SAMix)模块 实验结果 Spectral Adversarial MixUp for F…

Vue(二)

文章目录 1.条件渲染1.关于js中的false的判定2.基本介绍3.v-if1.需求分析2.代码实例 4.v-show实现5.v-if与v-show比较6.课后练习 2.列表渲染1.代码实例2.课后练习 3.组件化编程1.基本介绍2.实现方式一_普通方式2.实现方式二_全局组件方式3.实现方式三_局部组件方式 4.生命周期和…

十大排序——11.十大排序的比较汇总及Java中自带的排序算法

这篇文章对排序算法进行一个汇总比较&#xff01; 目录 0.十大排序汇总 0.1概述 0.2比较和非比较的区别 0.3基本术语 0.4排序算法的复杂度及稳定性 1.冒泡排序 算法简介 动图演示 代码演示 应用场景 算法分析 2.快速排序 算法简介 动图演示 代码演示 应用场景…

2024年4月最新版GPT

2024年4月最新版ChatGPT/GPT4, 附上最新的使用教程。 随着人工智能技术的不断发展&#xff0c;ChatGPT和GPT4已经成为了人们日常生活中不可或缺的助手。2024年4月,OpenAI公司推出了最新版本的GPT4,带来了更加强大的功能和更加友好的用户体验。本文将为大家带来最新版GPT4的实用…

Day91:API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

目录 API分类特征-SOAP&OpenAPI&RESTful API分类特征 API常见漏洞 API检测流程 API检测项目-Postman&APIKit&XRAY 工具自动化-SOAP - WSDL Postman 联动burpxray APIKit插件(可联动xray) 工具自动化-OpenApi - Swagger Postman 联动burpxray APIKit…

机器学习和深度学习--李宏毅(笔记与个人理解)Day17

Day 17Convolutional Neyral Network (CNN) 卷积神经网络一般都用在image 上面比较多一些&#xff0c;所以课程的例子大多数也都是image Image Classification the same size how about for pc? 这里对于tensor 张量这个概念&#xff0c;我还是比较奇怪&#xff0c;在我认为一…

JDK5.0新特性

目录 1、JDK5特性 1.1、静态导入 1.2 增强for循环 1.3 可变参数 1.4 自动装箱/拆箱 1.4.1 基本数据类型包装类 1.5 枚举类 1.6 泛型 1.6.1 泛型方法 1.6.2 泛型类 1.6.3 泛型接口 1.6.4 泛型通配符 1、JDK5特性 JDK5中新增了很多新的java特性&#xff0c;利用这些新…

5.10 mybatis之useActualParamName作用

文章目录 1. useActualParamNamefalse1.1 单个参数映射1.2 多个数1.3 param注解 2. useActualParamNametrue useActualParamName官方解释&#xff1a;允许使用方法签名中的名称作为语句参数名称。 为了使用该特性&#xff0c;你的项目必须采用 Java 8 编译&#xff0c;并且加上…

Linux内核之aligned用法实例(四十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…