绘制双坐标轴图
双坐标轴图作为常用的可视化方式之一,可以在同一张图中同时展示两个不同范围的数据,示例如下
在matplotib中,有以下两种方式来实现一个双坐标轴图
1. secondary_axis系列函数
具体包含以下两种函数
1.secondary_xaxis
2.secondary_yaxis
第一个函数用于绘制双x轴的图表,第二个函数用于绘制双y轴的图表,以secondary_yaxis函数为例,基本用法如下
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> ax.plot([1, 2, 3, 4])
>>> ax.secondary_yaxis('right', functions=(lambda x:100 - x, lambda x:100 - x))
>>> plt.show()
输出结果如下
该函数的第一个参数用于指定第二个坐标轴的位置,对于双y轴图表而言,取值范围包括left和right, 对于双x轴的图表而言,取值范围包括top和bottom。
第二个参数用于指定第二个坐标轴的scale, 其值为一个长度为2的元组,其中的每个元素为一个函数,用于指定坐标转换的规则。
对于该函数而言,还可以使用数字来指定第二个坐标轴的位置,对于y轴而言,0对应最左侧,1对应最右侧,用法如下
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> ax.plot([1, 2, 3, 4])
>>> ax.secondary_yaxis(1.01, functions=(lambda x:100 - x, lambda x:100 - x))
>>> plt.show()
输出结果如下
通过这种方式,可以指定位于图像外围的坐标轴,而且多次指定,可以生成多个坐标轴。该函数的返回值就是一个axes对象,可以借此来设置坐标轴的一些属性,基本用法如下
>>> fig, ax = plt.subplots()
>>> ax.plot([1, 2, 3, 4])
>>> ax1 = ax.secondary_yaxis('right', functions=(lambda x:100 - x, lambda x:100 - x))
>>> ax1.set_ylabel('Second')
>>> plt.show()
输出结果如下
2. twin系列函数
和seconday_xaxis类似,该系列也是包含了twinx和twiny两个函数, 其作用是拷贝生成一个新的axes对象,twinx生成的新axes与原来的axes共享x轴,而twiny生成的新axes与原来的axes共享y轴。
以twinx函数为例,基本用法如下
>>> fig, ax = plt.subplots()
>>> ax.plot([1, 2, 3, 4])
>>> ax1 = ax.twinx()
>>> ax1.plot([20, 19, 18, 17])
>>> plt.show()
输出结果如下
通过两个axes的叠加,可以轻松实现双坐标,而且不同的axes绘图时使用不同的数据,更加的方便直观。对于该种方式而言,第二个坐标轴的位置可以通过axes的spines属性进行调节,用法如下
>>> fig, ax = plt.subplots()
>>> ax.plot([1, 2, 3, 4])
>>> ax1 = ax.twinx()
>>> ax1.plot([20, 19, 18, 17])
>>> ax1.spines['right'].set_position(('axes', 1.01))
>>> plt.show()
输出结果如下
对于单个数据的双坐标轴,通过secondary_axis系列函数,实现起来更加方便,对于多个数据叠加的双坐标轴,则推荐使用twin系列函数来实现。
·end·
- 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 数组属性和方法
- android实现简单音乐播放器
- Android倒计时功能的实现代码
- android studio 使用Mocklocation虚拟定位
- Android自定义gridView仿头条频道拖动管理功能
- Android实现选项菜单子菜单
- Android scrollview如何监听滑动状态
- android 自定义圆角button效果的实例代码(自定义view Demo)
- Android开发简易音乐播放器
- Android 自定义ListView实现QQ空间界面(说说内包含图片、视频、点赞、评论、转发功能)
- Android自定义View实现自动吸附功能
- Qt音视频开发35-Onvif图片参数
- alpine安装openssl
- iOS14中的PHPicker
- Android 如何实现动态申请权限
- Android录屏的三种解决方案