前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【好久不见】细评python绘制双y轴图的几种方法

【好久不见】细评python绘制双y轴图的几种方法

作者头像
自学气象人
发布2022-10-09 09:57:03
3K0
发布2022-10-09 09:57:03
举报
文章被收录于专栏:自学气象人自学气象人

双y轴图在实际科研过程中比较常见。但我们常常会为了要把某个图形置于顶层,又或者是要把某个图形对应的y轴固定在某一侧而感到烦恼。别怕,今天这篇推文将会解决你的疑虑!

首先,我们先来绘制一个正常的双y轴图。从图中可以看到,红色的三角函数是在底层,而蓝色的直线是在顶层。

代码语言:javascript
复制
#method 1
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10,0.01)

fig, ax1 = plt.subplots( 1, 1, figsize=(9,3) )
ax1.plot( x, np.sin(x), color='red', linewidth=10)
ax2 = ax1.twinx()
ax2.plot( x, x, color='blue', linewidth=10)

现在,我们希望让图中红色的三角函数置于顶层,而蓝色的直线位于底层。要实现这个目的,我们仅需要调整画图顺序。用ax1先绘制直线,再用ax2绘制三角函数。

代码语言:javascript
复制
#method 2
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10,0.01)

fig, ax1 = plt.subplots( 1, 1, figsize=(9,3) )
ax1.plot( x, x, color='blue', linewidth=10)
ax2 = ax1.twinx()
ax2.plot( x, np.sin(x), color='red', linewidth=10)

对比方法2与方法1所绘制图的y轴坐标可以发现,虽然图形的显示层级(底层和顶层)发生了变化,但y轴也随之发生了对调。有没有什么方法可以让让y轴固定不动的同时,显示层级发生变化呢?

下面这个方法3在方法1的基础上,给出了facecolor的妙用。首先zorder控制图层顺序,其值越大,所对应图层越接近顶层(也就是表面层)。我们通过设置ax1的zorder为2,将其置于顶层。但由于每一个图层默认其facecolor是白色的,如果我们不对其进行设置,那底层的ax2直线图形就会被遮挡导致不可见。因此,我们通过设置ax1的facecolor为“none”,也就是无facecolor后,我们想要的效果就呈现出来了。

代码语言:javascript
复制
#method3
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10,0.01)

fig, ax1 = plt.subplots( 1, 1, figsize=(9,3) )
ax1.plot( x, np.sin(x), color='red', linewidth=10)
ax1.set_facecolor('none')
ax2 = ax1.twinx()
ax2.plot( x, x, color='blue', linewidth=10)
ax1.set_zorder(2)
ax2.set_zorder(1)

除此以外,还有一种较简单的方法可以实现这个目的。那就是在方法2的基础上,通过 ax.yaxis.tick_left() 和 ax.yaxis.tick_right()对调两个y轴的label。

代码语言:javascript
复制
#method4
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10,0.01)

fig, ax1 = plt.subplots( 1, 1, figsize=(9,3) )
ax1.plot( x, x, color='blue', linewidth=10)
ax2 = ax1.twinx()
ax2.plot( x, np.sin(x), color='red', linewidth=10)
ax1.yaxis.tick_right()
ax2.yaxis.tick_left()

以上就是本文的全部内容。非常感谢讨论群内各位气象人的热烈讨论!

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

本文分享自 自学气象人 微信公众号,前往查看

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

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

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