python在不同坐标系中绘制曲线

文章目录

    • 平面直角坐标系
    • 空间直角坐标系
    • 极坐标
    • 地理坐标

平面直角坐标系

回顾我们的数据可视化的学习历程,其实始于笛卡尔坐标系的创建,并由此建立了数与形的对应关系。在笛卡尔坐标系中随便点上一点,这个点天生具备坐标,从而与数对 ( x , y ) (x,y) (x,y)完成映射,这就是最基础的散点图。将点连在一起,便是折线图。

但在matplotlib中,折线图反而比散点图更加基础,因为散点图至少需要两组一一对应的X和Y坐标,而折线图在只接受一组数据的情况下,便会默认自然数列为x坐标,从而绘图过程更加遍历

import numpy as np
import matplotlib.pyplot as plt
ys = np.arange(100)**2
plt.plot(ys)
plt.show()

在这里插入图片描述

空间直角坐标系

将曲线绘制在三维坐标系中的方法有两个,尽管从思维的角度出发,直接绘制比较方便,但从matplotlib的绘图逻辑来说,最简单的方案是把二维坐标系嵌入到三维坐标系中,换言之,为其指定一个额外的轴。

xs = np.linspace(0, 1, 100)
ys = np.sin(xs * 2 * np.pi) / 2 + 0.5fig = plt.figure()
zs = ['x', 'y', 'z']
for i, z in enumerate(zs, 1):ax = fig.add_subplot(1,3,i, projection='3d')ax.plot(xs, ys, zs=0, zdir=z)ax.set_zlim(0,1)ax.set_xlim(0,1)ax.set_ylim(0,1)plt.show()

在上面的代码中,调用的仍旧是plot,但是用zdir参数指定了z轴方向,当为z轴设置不同的方向时,曲线所嵌入到的三维直角坐标系的坐标平面是不同的。

在这里插入图片描述
很显然,这是个伪3D曲线,但plot函数是有实力绘制真正的三维曲线的,无非多一个坐标轴而已

xs = np.linspace(0, 5, 100)
ys = np.sin(xs * 2 * np.pi) / 2 + 0.5
zs = np.cos(xs * 2 * np.pi) / 2 + 0.5
ax = plt.subplot(projection='3d')
ax.plot(xs, ys, zs)
plt.show()

效果如下

在这里插入图片描述

极坐标

极坐标的建立与三维直角坐标系的建立是相同的,均以指定projection的形式实现

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
ax = plt.subplot(projection='polar')
ax.plot(theta, r)
plt.show()

绘图结果如下

在这里插入图片描述

在极坐标中绘图时,plot函数保留了默认自变量的功能,试验一下就清楚了

ax = plt.subplot(projection='polar')
ax.plot(r)
plt.show()

下图中,由于默认 θ \theta θ的增长步长为1,这对于每圈 2 π 2\pi 2π的极坐标来说是非常大的一个量,故而图形在绘制过程中出现了不可避免的曲折。

在这里插入图片描述
但matplotlib并没有封装一个拿来就能用的柱坐标或者球坐标,除非自己在三维直角坐标系中实现一个。

地理坐标

projection的含义是投影,除了3D坐标和极坐标之外,还支持多种地理坐标,例如汉迈尔-埃托夫投影等,下面就列举几个不同的地理坐标,并在其中进行

projs = ['aitoff', 'hammer', 'lambert', 'mollweide']
fig = plt.figure()
xs = ys = np.arange(-2,2,0.01)
for i, p in enumerate(projs, 1):ax = fig.add_subplot(2,2,i,projection=p)ax.plot(xs, ys)plt.title(p)plt.grid()plt.show()

在这里插入图片描述

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

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

相关文章

CloudDriver一款将各种网盘云盘挂在到电脑本地变成本地磁盘的工具 教程

平时我们的电脑可能由于大量的文件资料之类的导致存储空间可能不够,所以我们可以选择将网盘我们的本地磁盘用来存放东西。 CloudDrive 是一款可以将 115、阿里云盘、天翼云盘、沃家云盘、WebDAV 挂载到电脑中,成为本地硬盘的工具,支持 Window…

短视频平台视频怎么去掉水印?

短视频怎么去水印,困扰很多人,例如,有些logo水印,动态水印等等,分享操作经验: 抖音作为中国最受欢迎的社交娱乐应用程序之一,已成为许多人日常生活中不可或缺的一部分。在使用抖音过程中&#x…

数据结构--基础知识

数据结构是什么? 数据结构是计算机科学中研究数据组织、存储和管理的方法和原则。它涉及存储和操作数据的方式,以便能够高效地使用和访问数据。 相关内容 基本组成 数组(Array):数组是一种线性数据结构,…

K8S暴露pod内多个端口

K8S暴露pod内多个端口 一、背景 公司统一用的某个底包跑jar服务,只暴露了8080端口 二、需求 由于有些服务在启动jar服务后,会启动多个端口,除了8080端口,还有别的端口需要暴露,我这里就还需要暴露9999端口。 注&a…

matlab进阶:求解在约束条件下的多元目标函数最值(fmincon函数详解)

🌅*🔹** φ(゜▽゜*)♪ **🔹*🌅 欢迎来到馒头侠的博客,该类目主要讲数学建模的知识,大家一起学习,联系最后的横幅! 喜欢的朋友可以关注下,私信下次更新不迷路&#xff0…

Vue 基础语法(二)

一、背景: 我们对于基础语法,说白了就是实现元素赋值,循环,判断,以及事件响应即可! 二、v-bind 我们已经成功创建了第一个 Vue 应用!看起来这跟渲染一个字符串模板非常类似,但是 V…

vue中在使用keep-alive时,会出现在页面跳转后el-tooltip或el-dropdown不消失的问题以及解决方法

一、 问题复现 跳转前: 跳转后: 二、分析 由于在vue中使用了keep-alive,页面在切换时,上一个页面的实例被缓存了,跳转后并没有销毁,所以才会残留 tooltip或dropdown,所以有以下解决思路&am…

这就是ChatGPT,走进我们的生活!

这就是ChatGPT,走进我们的生活! 早在年初,合作导师将我叫过去,让我了解学习一下ChatGPT,看能不能对我们的生活有所帮助。一直使用着国内镜像,五月份我才注册了OpenAI的账户。如今,打开购物商城购…

【雕爷学编程】MicroPython动手做(10)——零基础学MaixPy之神经网络KPU2

KPU的基础架构 让我们回顾下经典神经网络的基础运算操作: 卷积(Convolution):1x1卷积,3x3卷积,5x5及更高的卷积 批归一化(Batch Normalization) 激活(Activate) 池化&…

无人机调试笔记——常见参数

无人机的PID调试以及速度相关参数 1、Multicopter Position Control主要是用来设置无人机的各种速度和位置参数。调试顺序是先调试内环PID,也就是无人机的速度闭环控制,确认没有问题后再进行外环位置控制,也就是定点模式控制。 2、调试的时…

【分享帖】LCD的MCU接口和SPI接口详解

LCD(Liquid Crystal Display)液晶屏,作为电子产品的重要组成部分,是终端用户与电子产品交互的重要载体。现在市场上的LCD,按照尺寸、功能、接口、用途等分为很多种,本文主要介绍如下两种LCD物理接口&#x…

配置 gitlab https 访问

文章目录 1. 备份2. 生成SSL证书3. 配置文件4. 重启5. 访问 1. 备份 docker exec -ti gitlab-ce gitlab-rake gitlab:backup:create2. 生成SSL证书 yum install openssl openssl-devel -y mkdir /data/gitlab/config/ssl ; cd /data/gitlab/config/ssl### 生成证书 openssl…

思维导图在线生成,新手必备!

思维导图是一个很好的学习和工作的方式,可以解决我们工作中的很多困难的问题,但是现在随着思维导图学习方法的推广,市面上的导图软件层出不穷,电子化的思维导图软件极大的方便了我们的工作和生活,下面我们就一起来盘点…

Hudi Flink SQL源码调试学习(1)

前言 本着学习hudi-flink源码的目的,利用之前总结的文章Hudi Flink SQL代码示例及本地调试中的代码进行调试,记录调试学习过程中主要的步骤及对应源码片段。 版本 Flink 1.15.4Hudi 0.13.0 目标 在文章Hudi Flink SQL代码示例及本地调试中提到:我们…

CK-00靶机详解

CK-00靶机详解 靶场下载地址:https://download.vulnhub.com/ck/CK-00.zip 这个靶场扫描到ip打开后发现主页面css是有问题的,一般这种情况就是没有配置域名解析。 我们网站主页右击查看源代码,发现一个域名。 把域名添加到我们hosts文件中。…

Mac 终端快捷键设置:如何给 Mac 中的 Terminal 设置 Ctrl+Alt+T 快捷键快速启动

Mac 电脑中正常是没有直接打开终端命令行的快捷键指令的,但可以通过 commandspace 打开聚焦搜索,然后输入 ter 或者 terminal 全拼打开。但习惯了 linux 的同学会觉得这个操作很别扭。于是我们希望能通过键盘按键直接打开。 操作流程如下: 1…

MyBatis小记_one

目录 什么是框架 1.框架的概述 2.框架要解决的问题 3. 软件开发的分层重要性 4.分层开发的常见框架 MyBatis 框架概述 JDBC 编程的回顾 JDBC 问题分析 MyBatis 框架快速入门 1.官网下载MyBatis框架jar包 2.搭建MyBatis 开发环境 3. 编写持久层接口的映射文件 IUserD…

HTML笔记(1)

介绍 浏览器中内置了HTML的解析引擎,通过解析标记语言来展现网页;HTML标签都是预定义好的;Java工程师:后台代码的编写,和数据库打交道,把数据给网页前端的工程师;网页前端工程师:写H…

C++信号量与共享内存实现进程间通信

关于信号量和共享内存的相关知识可参考下面链接: 进程间通信方式介绍_夜雨听萧瑟的博客-CSDN博客 C 创建共享内存_c共享内存_夜雨听萧瑟的博客-CSDN博客 信号量SytemV与Posix信号量的介绍与用法_夜雨听萧瑟的博客-CSDN博客 直接上代码,代码如下&#…

记一次Apache HTTP Client问题排查

现象 通过日志查看,存在两种异常情况。第一种:开始的时候HTTP请求会报超时异常。 762663363 [2023-07-21 06:04:25] [executor-64] ERROR - com.xxl.CucmTool - CucmTool|sendRisPortSoap error,url:https://xxxxxx/realtimeservice/services/RisPort o…