加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Matplotlib寄生对数轴勾选不需要的镜像

发布时间:2020-12-20 13:43:19 所属栏目:Python 来源:网络整理
导读:我正在尝试使用来自mpl_toolkits.axes_grid1的host_subplot创建一个带有两个y轴的图,其中一个是对数的,一个是线性的.该图看起来没问题,但是辅助y轴(右)的次要刻度也显示在图的内侧的主y轴(左)上. import matplotlib.pyplot as pltfrom mpl_toolkits.axes_gri
我正在尝试使用来自mpl_toolkits.axes_grid1的host_subplot创建一个带有两个y轴的图,其中一个是对数的,一个是线性的.该图看起来没问题,但是辅助y轴(右)的次要刻度也显示在图的内侧的主y轴(左)上.

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA

host = host_subplot(111)
host.set_yticks(np.arange(-12,-3,1.0))

par1 = host.twinx()
par1.set_ylim( 2.7040e+3,1.3552e+7)
par1.set_yscale('log')

minorLocator_x1 = MultipleLocator(0.3333)
minorLocator_y1 = MultipleLocator(0.5)
host.xaxis.set_minor_locator(minorLocator_x1)
host.yaxis.set_minor_locator(minorLocator_y2)

我可以使用以下方法修复镜像的次对数轴刻度:

host = host_subplot(111,axes_class=AA.Axes)

但是,这会产生另一个问题,即x轴刻度标签显示在图的内部,就像x轴标签一样.

关于如何规避问题的任何想法?

解决方法

我找到了解决问题的解决方法,但没有使用mpl_toolkits.axes_grid1中的host_subplot.相反,我使用matplotlib轴,如下所示:

fig,ax1 = plt.subplots()

ax1.set_xlim(-0.25,5.1)
ax1.set_ylim(-3.75,-13)
ax2=ax1.twinx()

ax1.set_xlabel('X-label',fontdict=font)
ax1.set_ylabel('Y1-label$',rotation='horizontal',fontdict=font)
ax2.set_ylabel('Y2-label',fontdict=font)

ax2.set_ylim(2.7040e+3,1.3552e+7)
ax2.set_yscale('log')
ax1.set_yticks(np.arange(-12,1.0))

ml = MultipleLocator(0.5)
minorLocator = MultipleLocator(0.3333)
ax1.xaxis.set_minor_locator(minorLocator)
ax1.yaxis.set_minor_locator(ml)

这产生了正确的情节.在我看来,之前的问题是第一种情况下的ticks(set_minor_locator)的模糊分配(不使用host_subplot中的axes_class = AA.Axes).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读