Python实现在不同坐标系中绘制曲线

 更新时间:2023年07月31日 08:27:52   作者:微小冷  
这篇文章主要为大家学习介绍了Python如何实现在不同坐标系中绘制曲线,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下

平面直角坐标系

回顾我们的数据可视化的学习历程,其实始于笛卡尔坐标系的创建,并由此建立了数与形的对应关系。在笛卡尔坐标系中随便点上一点,这个点天生具备坐标,从而与数对(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.5
fig = 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()

到此这篇关于Python实现在不同坐标系中绘制曲线的文章就介绍到这了,更多相关Python曲线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Protocol Buffers的C语言拓展提速Python程序的示例

    使用Protocol Buffers的C语言拓展提速Python程序的示例

    这篇文章主要介绍了使用Protocol Buffers的C语言拓展提速Python程序的示例,使用C拓展Python是Python编程进阶中的重要技巧,需要的朋友可以参考下
    2015-04-04
  • 详解python配置虚拟环境

    详解python配置虚拟环境

    这篇文章主要介绍了python配置虚拟环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 基于Opencv制作的美颜相机带你领略美颜特效的效果

    基于Opencv制作的美颜相机带你领略美颜特效的效果

    最关于美颜类相机最重要的是第一步:人脸检测,本篇文章中是采用openCV开源库实现,文中给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • 简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出

    这篇文章主要介绍了Python中的字符串与字符串的输入输出,Python3.x版本中默认以Unicode为编码,省去了不少麻烦,需要的朋友可以参考下
    2016-03-03
  • wxPython中文教程入门实例

    wxPython中文教程入门实例

    这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下
    2014-06-06
  • python实现mysql的单引号字符串过滤方法

    python实现mysql的单引号字符串过滤方法

    这篇文章主要介绍了python实现mysql的单引号字符串过滤方法,以一个较为详细的实例形式分析了Python针对MySQL的操作及字符串过滤的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Python中使用haystack实现django全文检索搜索引擎功能

    Python中使用haystack实现django全文检索搜索引擎功能

    django是python语言的一个web框架,功能强大。配合一些插件可为web网站很方便地添加搜索功能。下面通过本文给大家分享Python中使用haystack实现django全文检索搜索引擎功能,感兴趣的朋友一起看看吧
    2017-08-08
  • Tensorflow获取张量Tensor的具体维数实例

    Tensorflow获取张量Tensor的具体维数实例

    今天小编就为大家分享一篇Tensorflow获取张量Tensor的具体维数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • dataframe 按条件替换某一列中的值方法

    dataframe 按条件替换某一列中的值方法

    今天小编就为大家分享一篇dataframe 按条件替换某一列中的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python PyCryptodome库介绍与实例教程

    Python PyCryptodome库介绍与实例教程

    PyCryptodome提供了丰富的加密功能,可以满足多种安全需求,本文介绍了几个常见的使用场景,包括对称加密、非对称加密、哈希函数和消息认证码,感兴趣的朋友跟随小编一起看看吧
    2024-07-07

最新评论