前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绘制双坐标轴图

绘制双坐标轴图

作者头像
生信修炼手册
发布2020-08-28 03:07:53
1.6K0
发布2020-08-28 03:07:53
举报
文章被收录于专栏:生信修炼手册

双坐标轴图作为常用的可视化方式之一,可以在同一张图中同时展示两个不同范围的数据,示例如下

在matplotib中,有以下两种方式来实现一个双坐标轴图

1. secondary_axis系列函数

具体包含以下两种函数

1.secondary_xaxis

2.secondary_yaxis

第一个函数用于绘制双x轴的图表,第二个函数用于绘制双y轴的图表,以secondary_yaxis函数为例,基本用法如下

代码语言:javascript
复制
>>> 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对应最右侧,用法如下

代码语言:javascript
复制
>>> 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对象,可以借此来设置坐标轴的一些属性,基本用法如下

代码语言:javascript
复制
>>> 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函数为例,基本用法如下

代码语言:javascript
复制
>>> 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属性进行调节,用法如下

代码语言:javascript
复制
>>> 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·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档