(Python)在Matplotlib中对图像坐标轴进行log转换

对于跨度很大其分布离散的数据,常用log转换来缩写其差距,呈现在图上的效果也更好,比如在绘制转录组的表达量数据时,常用log转换之后的值进行绘制。在matplotlib中,支持在绘图时对数据进行log转换,根据log转换的需求,体用了以下3种函数

  1. loglog, 同时对x轴和y轴的值进行log转换

  2. semilogx, 只对x轴的值进行log转换,y轴的值不变

  3. semilogy, 只对y轴的值进行log转换,x轴的值不变

上述3种函数本质其实是plot函数,只不过在绘制之前自动对相应的数据进行了log转换,所以plot函数的参数对于这些函数都适用,下面来具体看下用法

  1. loglog

首先构建一个x轴和y轴数据都是10的乘方的散点图,代码如下

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
data = np.array([1, 2, 3, 4])
power_x = np.power(10 , data)
power_y = np.power(10 , data)
plt.plot(power_x, power_y)

输出结果如下

通过loglog函数,可以同时对x轴和y轴的数据进行log转换,用法如下

python 复制代码
plt.loglog(power_x, power_y)

输出结果如下

从效果可以看出,采用了log10转换之后的值进行绘图,同时对应的标签用乘方的方式进行标记。

2. semilogx

semilogx函数只对x轴的值进行log转换,先来看下不转换时的效果,代码如下

python 复制代码
plt.plot(power_x, data)

输出结果如下

只对x轴的值进行log转换,代码如下

python 复制代码
plt.semilogx(power_x, data)

输出结果如下

3. semilogy

semilogy函数只对y轴的值进行log转换,先来看下不转换时的效果,代码如下

python 复制代码
plt.plot(data, power_y)

输出结果如下

只对y轴的值进行log转换,代码如下

python 复制代码
plt.semilogy(data, power_y)

输出结果如下

除了以上基本用法外,该函数还具有以下3种专属参数

  1. base, 指定对数的值,默认值为10,即进行log10的转换

  2. subs,设定minor ticks的位置,默认值为None

  3. nonpositive, 对非负值的处理,因为只有正数可以取log, 如果原始值为负值,此时有两种处理方式,第一种是丢掉这个点,也是默认的处理方式,对应该参数的值为mask, 在图中不显示这个点,第二种是将这个值调整为最接近的正数,对应该参数的取值为clip

为了便于对x轴和y轴精确指定,上述参数都有x轴和y轴两个版本,以base为例,具体的有basex和basey两个参数,用法如下

python 复制代码
plt.loglog(power_x, power_y, basex=2)

输出结果如下

通过log系列函数,可以灵活的对数据进行log转换。

相关推荐
美狐美颜SDK开放平台13 分钟前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq042415 分钟前
C++小案例 - 日志实战
开发语言·c++
万化冥合31 分钟前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
星夜离尘5634 分钟前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
车软学堂37 分钟前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
天空依然蔚蓝38 分钟前
分享一个自动检测网站在线状态的python程序
python·运维开发·1024程序员节
岁月宁静1 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
码匠许师傅1 小时前
【C++三方组件】Qt 概览:桌面 C++ 的事实标准与许可证三轨
开发语言·c++·qt
codists2 小时前
《crafting interpreters》阅读笔记:p45-p45
python
码匠许师傅2 小时前
【C++三方组件】POCO:跨平台系统编程全家桶
开发语言·c++