掌握坐标轴的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的乘方的散点图,代码如下
>>> 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转换,用法如下
>>> plt.loglog(power_x, power_y)
输出结果如下
从效果可以看出,采用了log10转换之后的值进行绘图,同时对应的标签用乘方的方式进行标记。
2. semilogx
semilogx函数只对x轴的值进行log转换,先来看下不转换时的效果,代码如下
>>> plt.plot(power_x, data)
输出结果如下
只对x轴的值进行log转换,代码如下
>>> plt.semilogx(power_x, data)
输出结果如下
3. semilogy
semilogy函数只对y轴的值进行log转换,先来看下不转换时的效果,代码如下
>>> plt.plot(data, power_y)
输出结果如下
只对y轴的值进行log转换,代码如下
>>> 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两个参数,用法如下
>>> plt.loglog(power_x, power_y, basex=2)
输出结果如下
通过log系列函数,可以灵活的对数据进行log转换。
·end·
- Quartz框架应用(1)
- 6个编写优质干净代码的技巧
- 【Jfinal源码】第一章 com.jfinal.core.JFinalFilter(1)
- 【ehcache】 timeToLiveSeconds 和 timeToLiveSeconds 的区别
- 升级 CentOS7 、Redis 3.2.x 的问题
- AngularJS 中使用Swiper制作滚动图不能滑动
- JAVA服务端配置允许跨域请求
- CentOS mysql配置主从复制
- Quartz依赖数据库表
- Spring Security Oauth2.0 实现短信验证码登录
- 【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud
- 基于Redis实现分布式应用限流
- Jasypt : 整合spring boot加密应用配置文件敏感信息
- Eureka:扩展ClientFilter实现服务注册自定义过滤
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ESP8266如何设置wifi。
- ESP8266搭建web服务器
- 关于持续交付中Git分支管理的思考
- 轻松应对并发问题,Newbe.Claptrap 框架中 State 和 Event 应该如何理解?
- 如何暂停一个正在运行的线程?
- WebMonitor采集端优化之路
- 美颜算法之自动祛斑算法实现 | 案例分享
- 附025.kubeadm部署Kubernetes更新证书
- 消息提示时间的格式化例子(小程序)
- 【Spark】用scala2.11编译打包构建镜像
- 移动端事件穿透的原理与解决方案
- 你被追尾了
- 深入理解JavaScript作用域
- 《闲扯Redis七》Redis字典结构的底层实现
- 深入理解JavaScript闭包之什么是闭包