Python之数据分析(三维立体图像、极坐标系、半对数坐标)

2023-11-17

写在前面:

import numpy as np
import matplotlib.pylab as mp
因此文章中的np就代表numpy库,mp就代表pylab绘图库

一、三维立体图像

  • 导入类:from mpl_toolkits.mplot3d import axes3d
  • 获得三维坐标轴:ax = mp.gca(projection=‘3d’)
1、三维线框
  • 格式:ax.plot_wireframe(x, y, z, rstride=行距, cstrid=列距, linewidth=线宽, color=颜色)
  • 测试代码:
import numpy as np
import matplotlib.pylab as mp
from mpl_toolkits.mplot3d import axes3d

n = 1000
# 栅格化:两组1000个-3到3的一维数组成x和y,会形成1000*1000个焦点的二维数组
x, y = np.meshgrid(np.linspace(-3, 3, n),
                   np.linspace(-3, 3, n))

# uniform:均匀分布,每个随机数概率一样在0.5和1.0之内产生n个随机数
y1 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)  # (1 - x/n)为了方便显示
y2 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)
z = (1 - x/2 + x**5 + y**3) * \
    np.exp(-x**2 - y**2)
# 换行做运算需要用\隔开,exp是底数为x指数是-x**2 - y**2


# 图像属性
mp.figure("3D Wireframe")

# 创建3D坐标轴
ax = mp.gca(projection='3d')

mp.title("3D Wireframe", fontsize=20)  # 图像标题

# X、Y、Z坐标轴文本
ax.set_xlabel('X', fontsize=14)
ax.set_ylabel('Y', fontsize=14)
ax.set_zlabel('Z', fontsize=14)

mp.tick_params(labelsize=10)  # 刻度标签大小

# 绘制三维线框图像
ax.plot_wireframe(x, y, z, rstride=30, cstride=30, linewidth=0.5, color='orangered')


mp.show()
  • 测试效果
    11
2、三维曲面
  • 格式:ax.plot_surface(x, y, z, rstride=行距, cstrid=列距, cmap=颜色映射)
  • 测试代码:
import numpy as np
import matplotlib.pylab as mp
from mpl_toolkits.mplot3d import axes3d

n = 1000
# 栅格化:两组1000个-3到3的一维数组成x和y,会形成1000*1000个焦点的二维数组
x, y = np.meshgrid(np.linspace(-3, 3, n),
                   np.linspace(-3, 3, n))

# uniform:均匀分布,在0.5和1.0之内产生n个随机数
y1 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)  # (1 - x/n)为了方便显示
y2 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)
z = (1 - x/2 + x**5 + y**3) * \
    np.exp(-x**2 - y**2)
# 换行做运算需要用\隔开,exp是底数为x指数是-x**2 - y**2

# 图像属性
mp.figure("3D Surface")

# 创建3D坐标轴
ax = mp.gca(projection='3d')

mp.title("3D Surface", fontsize=20)  # 图像标题

# X、Y、Z坐标轴文本
ax.set_xlabel('X', fontsize=14)
ax.set_ylabel('Y', fontsize=14)
ax.set_zlabel('Z', fontsize=14)

mp.tick_params(labelsize=10)  # 刻度标签大小

# 绘制三维线框图像:行距列距越小,画的图越密集
ax.plot_surface(x, y, z, rstride=10, cstride=10, cmap='jet')


mp.show()
  • 测试效果:
    22
3、三维散点
  • 格式:ax.scatter(x, y, z, s=大小, c=颜色, marker=点型)
  • 测试代码:
import numpy as np
import matplotlib.pylab as mp
from mpl_toolkits.mplot3d import axes3d

# 获得1000个使用随机作为服从正态分布的数据样本(数组)
n = 1000
x = np.random.normal(0, 1, n)  # 一参为标准差,二参为分布平坦性(越大越分散,越小越集中),三参为点的个数
y = np.random.normal(0, 1, n)
z = np.random.normal(0, 1, n)
d = np.sqrt(x ** 2 + y ** 2 + z ** 2)  # 根号下 x平方加y平方 作为点到正态中心的距离

# 绘制图像
mp.figure("Scatter 3D")
ax = mp.gca(projection='3d')
mp.title("Scatter 3D", fontsize=20)  # 图像标题

ax.set_xlabel('X', fontsize=14)  # X、Y刻度显示的文本
ax.set_ylabel('Y', fontsize=14)
ax.set_zlabel('Z', fontsize=14)

mp.tick_params(labelsize=10)  # 刻度标签大小

ax.scatter(x, y, z, s=60, c=d, cmap="jet_r", alpha=0.5, marker='*')  # marker常用D,*,s,默认圆点o

mp.show()
  • 测试效果:
    33

二、极坐标系

1、格式
ax = mp.gca(projection=‘polar’)
mp.plot…
mp.scatter…
x、y分别对应极角、极径

2、测试代码

import numpy as np
import matplotlib.pylab as mp

t = np.linspace(0, 2 * np.pi, 1001)  # 极角
# 螺旋线
r_spiral = 0.8 * t  # 螺旋线,极径与极角是0.8倍的关系
# 玫瑰线
r_rose = 5 * np.sin(6 * t)

# 绘制图像
mp.figure("Polar", facecolor='lightgray')
ax = mp.gca(projection='polar')
mp.title("Polar", fontsize=20)  # 图像标题

# 坐标文本:极角,极径
ax.set_xlabel(r'$\theta$', fontsize=14)
ax.set_ylabel(r'$\rho$', fontsize=14)
mp.grid(linestyle=':')

# 螺旋线
mp.plot(t, r_spiral, c='dodgerblue', label=r'$\rho=0.8\theta$')
# 玫瑰线
mp.plot(t, r_rose, c='red', label=r'$\rho=5sin(6\theta)$')

mp.tick_params(labelsize=10)  # 刻度标签大小

mp.legend()
mp.show()

3、测试效果
44

三、半对数坐标

1、格式
mp.semilogy(…参数与mp.plot一样)
mp.semilogx()

2、测试代码

import numpy as np
import matplotlib.pylab as mp

y = np.array([1, 10, 100, 1000, 100, 10, 1])  # y坐标序列


# 绘制图像
mp.figure("Normal & Log", facecolor='lightgray')

mp.subplot(2, 1, 1)  # 创建位置在2行1列的子图

# 普通plot
mp.title("Normal", fontsize=16)  # 图像标题
mp.ylabel('Y', fontsize=12)

# 刻度定位:x方向
ax = mp.gca()
ax.xaxis.set_major_locator(
    mp.MultipleLocator(1)  # 多点定位器主刻度
)
ax.xaxis.set_minor_locator(
    mp.MultipleLocator(0.1)  # 多点定位器次刻度
)
# y方向
ax.yaxis.set_major_locator(
    mp.MultipleLocator(250)  # 多点定位器主刻度
)
ax.yaxis.set_minor_locator(
    mp.MultipleLocator(50)  # 多点定位器次刻度
)

# 设置主刻度网格线
mp.grid(which='major', axis='both', linewidth=0.75, linestyle='-', color='lightgray')
# 设置次刻度网格线
mp.grid(which='minor', axis='both', linewidth=0.25, linestyle='-', color='lightgray')
mp.plot(y, 'o-', c='dodgerblue', label='plot')
mp.legend()

mp.subplot(2, 1, 2)  # 创建位置在2行1列的子图
# 对数plot坐标
mp.title("Log", fontsize=16)  # 图像标题
mp.xlabel('X', fontsize=12)
mp.ylabel('Y', fontsize=12)

# 刻度定位:x方向
ax = mp.gca()
ax.xaxis.set_major_locator(
    mp.MultipleLocator(1)  # 多点定位器主刻度
)
ax.xaxis.set_minor_locator(
    mp.MultipleLocator(0.1)  # 多点定位器次刻度
)
# y方向:按照缺省来自动设置

# 设置主刻度网格线
mp.grid(which='major', axis='both', linewidth=0.75, linestyle='-', color='lightgray')
# 设置次刻度网格线
mp.grid(which='minor', axis='both', linewidth=0.25, linestyle='-', color='lightgray')
mp.semilogy(y, 'o-', c='orangered', label='semilog')
mp.legend()

mp.tight_layout()
mp.show()

3、测试效果
55

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之数据分析(三维立体图像、极坐标系、半对数坐标) 的相关文章

随机推荐

  • python 协程可以嵌套协程吗_Python学习后有哪些方向可以选择?Python有什么好的学习方法吗?(附教程)...

    随着人工智能的发展 Python近两年也是大火 越来越多的人加入到Python学习大军 对于毫无基础的人该如何入门Python呢 这里整理了一些个人经验和Python入门教程供大家参考 如果你是零基础入门 Python 的话 建议初学者至少
  • 3.1 向量的模和单位向量

    向量的长度和单位向量 向量的长度 模 u 3 4 该向量的大小是多少 u 5 二范数 欧拉距离 在二维空间中 可以直接根据勾股定理计算出 u OP 2 3 5 该向量的大小是多少 n维向量 求模 同理 单位向量 在向量上记 为单位向量 长度
  • 股票数据API整理

    最近在做股票分析系统 数据获取源头成了一大问题 经过仔细的研究发现了很多获取办法 这里整理一下 方便后来者使用 获取股票数据的源头主要有 数据超市 雅虎 新浪 Google 和讯 搜狐 ChinaStockWebService 东方财富客户
  • k8s--基础--23.1--认证-授权-准入控制--介绍

    k8s 基础 23 1 认证 授权 准入控制 介绍 1 介绍 k8s对我们整个系统的认证 授权 访问控制做了精密的设置 对于k8s集群来说 apiserver是整个就集群访问控制的唯一入口 我们在k8s集群之上部署应用程序的时候 可以通过宿
  • 数据结构_课程设计——最小生成树:室内布线

    转载请注明出处 http blog csdn net lttree 这道课程设计 费不少时间 太麻烦了 明明是能力不够 最小生成树 室内布线 题目要求 装修新房子是一项颇为复杂的project 如今须要写个程序帮助房主设计室内电线的布局 首
  • 数组练习题(编程题)

    1 从终端 键盘 读 20个数据到数组中 统计其中正数的个数 并计算这些正数之和 int sum 0 int count 0 int input int arr 20 0 初始化处理 arr 0x0000002d1b13f8c0 85899
  • 7.25总结,正则表达式+号的含义

    一 正则表达式 由 括起来的是需要判断的字符 eg a z A Z 0 9 在 加 号表示多次并且连续满足 条件的式子 表示有没有 String s1 123qwe13qwe s1 s1 replaceAll 0 9 替换 System o
  • 用Python爬虫接私活,赚了32K!

    网络爬虫 很多人觉得这是技术控的专属 实际上爬虫是人人都能掌握的技能 爬虫到底能干什么 基本你所能看到的全部信息 它都能抓取 例如 收集并批量下载某音乐软件付费歌曲 某视频软件的付费视频 采集北京所有小区的信息及北京所有小区的所有历史成交记
  • centos7 lvm 创建脚本

    centos7 lvm 创建脚本 Centos7 lvm创建 适用场景只有一块新加的磁盘 且未分区 挂载目录为riva 可自定义 date 2023 bin bash 注意此处变量 Disk dev sd 不同的平台会有差异 比如腾讯云为
  • Attempted to load tokenizers/punkt/PY3/english.pickle

    分明已经把punkt放到服务器相应文件下 但是还是显示没成功 错误原因是解压得时候文件目录有两个punkt
  • VUE之自定义插件

    index js文件 import promptBox from prompt box vue 定义插件对象 const PromptBox vue的install方法 用于定义vue插件 PromptBox install functio
  • rocketMq介绍和安装

    rocketMq介绍和安装 Mq介绍 MQ MessageQueue 消息队列 队列 是一种FIFO 先进先出的数据结构 消息由生产者发送到MQ进行排队 然后按原来的顺序交由消息的消费者进行处理 QQ和微信就是典型的MQ MQ的作用 主要有
  • Vue项目中如何引入外部js文件,并使用其中定义的函数

    Vue项目中如何引入外部js文件 并使用其中定义的函数 一些常用的功能函数 我们希望将其封装起来放入一个外部JS文件中 好方便我们在需要的时候使用 vue可以使用import指令引入外部文件 但是作为新手 在使用过程中难免会导致很多错误 这
  • maven导入依赖失败问题——最系统、最彻底的解决方案

    目录 一 idea配置maven 1 配置maven版本及本地仓库 二 清理Local Repository的 lastUpdated文件 三 在idea中重新导入依赖 一 idea配置maven 1 配置maven版本及本地仓库 关于项目
  • 排序算法之堆排序(Heap Sort)——C语言实现

    堆排序 Heapsort 是指利用堆积树 堆 这种数据结构所设计的一种排序算法 它是选择排序的一种 算法分析 在学习堆排序之前我们要先了解堆这种数据结构 堆的定义如下 n个元素的序列 k1 k2 kn 当且满足以下关系时 称之为堆 若将此序
  • 短视频平台-小说推文(知乎)推广任务详情

    知乎会员 知乎日结内测中 可能暂只对部分优质会员开放 2023 03 29通知 知乎拉新项目 由于内部测试转化较低 暂时下线 原有关键词出单不受影响 1 关键词 1 1 选择会员文 在知乎 首页 或者 会员 里面选取 需要选取文章链接 点进
  • 二.centos7和主机实现xftp传文件,包含解决一些主机虚拟机互联的问题

    首先打开安装好的centos7 一 需要获取的信息 虚拟机 ifconfig 信息 主要是ensxx的信息 主机 ipconfig 信息 主要是vm8的信息 虚拟机点 编辑 虚拟网络编辑器 界面 查看虚拟机右下是否连接 点虚拟机右上角 看有
  • Nacos启动: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionTable nacos_config.config_inf

    把nacos 1 1 4 server下载到本地之后 然后直接在bin目录下启动startup cmd报错 本地Mysql版本 5 6 44 nacos server版本 1 1 4 我找了很多解决办法 更多的说的是nacos自带的mysq
  • vue 实时往数组里追加数据

    使用Vue set 以下来解读一下 Vue set this tableDatas this selected obj 1 this tableDatas是我们声明好的数组 以下是自定义数据 tableDatas id 1 caseName
  • Python之数据分析(三维立体图像、极坐标系、半对数坐标)

    文章目录 写在前面 一 三维立体图像 1 三维线框 2 三维曲面 3 三维散点 二 极坐标系 三 半对数坐标 写在前面 import numpy as np import matplotlib pylab as mp 因此文章中的np就代表