Python绘图坐标系映射,对数坐标系

news2024/9/22 7:21:27

文章目录

    • 对数坐标系
    • 自定义映射
    • 对数坐标图

对数坐标系

在实际绘图时,如果 x , y x,y x,y这两轴的数据变化速率相差过多,线性的坐标映射将无法展示图形变化的细节,就需要更改坐标系的数字映射逻辑,以获得更具细节的图像。

在matplotlib绘图时,通过set_xscale和set_yscale这两个函数,可以轻松对坐标系进行坐标放缩,并且提供了4个基础的放缩模板,分别是’linear’, ‘log’, ‘symlog’, ‘logit’。

import numpy as np
import matplotlib.pyplot as plt
xs = np.linspace(-5,5,1000)

labels = ['linear', 'log', 'symlog', 'logit']

fig = plt.figure()
for i,L in enumerate(labels, 1):
    ax = fig.add_subplot(2,2,i)
    ax.plot(xs, np.tan(xs))
    ax.plot(xs, np.exp(xs))
    ax.set_yscale(L)
    ax.set_title(L)
    ax.grid()

plt.tight_layout()
plt.show()

在这里插入图片描述
从其y轴坐标可以看出,linear就是最常见的线性映射;log是对数坐标;symlog是“双”对数坐标;logit则是中间大、两端小的对数映射。

所以,在log图中,由于对数映射是非对称的,其y轴坐标从小到大依次是 0.01 , 0.1 , 1 , 10 , 100 0.01,0.1,1,10,100 0.01,0.1,1,10,100,所以 尽管 tan ⁡ x \tan x tanx本应上下对称,但下方却直接超出了坐标轴给定的范围。

自定义映射

set_xscale和set_yscale这两个函数,除了支持matplotlib实现好的字符串标识之外,还支持自定义函数映射。例如,想把y轴映射为 y \sqrt{y} y ,则需要定义两个函数,分别用于坐标系映射和图像映射,具体代码如下

forward = lambda x : x**(1/2)
inverse = lambda x : x**2

fig, ax = plt.subplots()
xs = np.linspace(0,4,100)
ax.plot(xs, np.exp(xs))
ax.set_yscale('function', functions=(forward, inverse))
ax.set_title('function: $x^{1/2}$')
ax.grid()
plt.tight_layout()
plt.show()

绘图结果如下

在这里插入图片描述
可以看到,y轴方向等间隔的刻度,其映射的长度是依次减半的。10到20在y向的长度,差不多是0到10的二分之一。

对数坐标图

虽然上面的例程均通过plot图来演示,但set_xscale和set_yscale其实适用于各种图像。而针对折线图的对数坐标图,matplotlib已经实现了更加成熟的封装,即semilogx, semilogy和loglog。

fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(8,3))

ax1.semilogx(t, np.sin(2 * np.pi * t))
ax1.set(title='semilogx')
ax1.grid()

ax2.semilogy(t, np.exp(-t / 5.0))
ax2.set(title='semilogy')
ax2.grid()

ax3.loglog(t, 20 * np.exp(-t / 10.0))
ax3.set(title='loglog')
ax3.grid()

plt.tight_layout()
plt.show()

结果为

在这里插入图片描述

其中,semilogx和semilogy顾名思义,分别是对x轴和y轴进行坐标映射,而loglog则对两个轴都进行了坐标映射。

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

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

相关文章

【华为HCIP | 高级网络工程师】刷题日记(11)

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:见文末 🕊️系列专栏:🖼️ 零…

pycharm bash: 第 0 行: cd: xxxxxxx: 没有那个文件或目录

设置里面的python接口,path mappings 是空的,设置好本地机器和远程机器所对应的目录就好了。如下图:

【100天精通python】Day23:正则表达式,基本语法与re模块详解示例

目录 专栏导读 1 正则表达式概述 2 正则表达式语法 2.1 正则表达式语法元素 2.2 正则表达式的分组操作 3 re 模块详解与示例 4 正则表达式修饰符 专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 1 正则表达式概述 python 的…

24考研数据结构-第四章:串

目录 第四章:串4.1串的定义和实现4.1.1串的定义4.1.2串的基本操作字符集编码 4.1.3串的存储结构1. 定长顺序存储表示基本操作实现(基于方案四) 2. 堆分配存储表示3. 串的链式存储结合链表思考优缺点 知识回顾 4.2串的模式匹配4.2.1朴素模式匹…

ChatGPT辅助写论文:提升效率与创造力的利器

写作是人类最重要的交流方式之一,也是学术研究中不可或缺的环节。然而,写作并不是一件容易的事情,尤其是对于科研人员来说,他们需要花费大量的时间和精力来撰写高质量的论文,并且面临着各种各样的挑战,如语…

用栈实现队列——数据结构与算法

😶‍🌫️Take your time ! 😶‍🌫️ 💥个人主页:🔥🔥🔥大魔王🔥🔥🔥 💥代码仓库:🔥🔥魔…

Flowable-子流程-事务子流程

目录 定义图形标记XML内容使用示例视频教程 定义 事务子流程也称作事务块,是一个嵌入式子流程,用来处理一组必须在同一个事务中完成的活 动,使它们共同成功或失败。事务子流程中如果有一个活动失败或者取消,整个事务子流程的所有…

<C++> 四、模板初阶

1.泛型编程 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 如何实现一个通用的交换函数呢?使用函数重载可以实现 void Swap(int &left, int &right) {int temp left;left right;right temp; …

延时函数

其实从学习FreeRTOS以来,一直有个疑问:为什么freertos.c中的延时函数要使用osDelay(),而不直接使用HAL_Delay()呢?两者有什么区别? 本节就来探讨一下这个问题的答案: 延时函数分类 相对延时:…

linux查看日志指令

今天导师要求,使用linux查看日志,这里呢,先是学习了一下ubuntu内核的linux,现在回顾一下查看日志的语句 linux查看日志指令 一、tail二、head三、cat四、more五、view5.1 从上往下找5.2 从下往上找5.3退出 六、搜索6.1模糊搜索6.2…

【新版系统架构补充】-嵌入式技术

嵌入式微处理体系结构 冯诺依曼结构 传统计算机采用冯诺依曼结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构 冯诺依曼的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存…

中国最赚钱公司出炉

7月25日,2023年《财富》中国500强排行榜正式发布。国家电网以5300亿美元的营收位居榜首,中国石油和中国石化分列第二和第三。工商银行则成为最赚钱的公司。 图片来源:财富FORTUNE 1中国500强TOP10 数据显示,今年500家上榜的中国…

华为交换机配置SSH远程登录

连接console线直接配置 1、在服务器端生成本地密钥对 <HUAWEI>system-view [HUAWEI] dsa local-key-pair create Info: The key name will be: HUAWEI_Host_DSA. Info: The key modulus can be any one of the following : 1024, 2048. Info: If the key modulus i…

Qt应用开发(基础篇)——滑块类 QSlider、QScrollBar、QDial

目录 一、前言 二、QAbstractSlider类 1、invertedAppearance 2、invertedControls 3、maximum 4、minimum 5、orientation 6、pageStep 7、singleStep 8、sliderDown 9、tracking 10、sliderPosition 11、value 12、信号 三、QDial类 1、notchSize 2、notchTa…

BES 平台 SDK之代码架构讲解一

本文章是基于BES2700 芯片&#xff0c;其他BESxxx 芯片可做参考&#xff0c;如有不当之处&#xff0c;欢迎评论区留言指出。 1. SDK 目录下包含的文件 1.1 Apps 文件 主要包含了上层应用逻辑代码&#xff0c;比如电池电量管理、按键、main目录下的app_init.c &#xff08;应用…

IBM Spectrum LSF (“LSF“ ,简称为负载共享设施) 用户案例

IBM Spectrum LSF (“LSF” &#xff0c;简称为负载共享设施) 用户案例 IBM Spectrum LSF (“LSF” &#xff0c;简称为负载共享设施) 软件是业界领先的企业级软件。 LSF 在现有异构 IT 资源之间分配工作&#xff0c;以创建共享&#xff0c;可扩展且容错的基础架构&#xff0c…

Linux进程(万字解析)

进程 一.冯诺依曼体系结构二.操作系统1.管理的概念2.系统调用和库函数概念 三.进程1.先描述2.再组织 四.Linux里的PCB1.概念2.理解当前路径3.PID1.kill指令2.获取自己的PID 4.初识fork函数 五.进程状态1.一般意义上的1.运行2.阻塞3.挂起 2.Linux内核里的状态1.运行态2.阻塞态3.…

2023软考下半年考试和报名时间汇总(附详细报名流程)

2023年上半年软考结束了&#xff0c;相信有不少准备报考下半年软考的考生正摩拳擦掌&#xff0c;期待在11月的考试中大显身手。2023下半年软考什么时候报名呢&#xff1f;一起来看看吧~ 根据中国计算机技术职业资格网发布的关于《2023年度计算机技术与软件专业技术资格&#x…

ERROR: transport error 202: gethostbyname: unknown host报错解决方案

Java 9 syntax for remote debugger: -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005Java 8 不适用 *:port&#xff0c;应该使用: -agentlib:jdwptransportdt_socket,servery,suspendn,address5005参考 https://stackoverflow.com/questions/50344957/ja…

预测性维护:融合新兴技术6大发展趋势

随着技术的不断进步&#xff0c;预测性维护在工业领域呈现出新的发展趋势。这些趋势旨在通过更有效地分析数据和利用先进的技术手段来提高设备的维护效率和性能。以下是笔者认为可能的预测性维护的六大新兴趋势&#xff0c;抛砖引玉&#xff0c;供交流探讨&#xff1a; 一、数据…