Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matplotlib次轴,跨第一个轴的一半_Matplotlib_Axes - Fatal编程技术网

matplotlib次轴,跨第一个轴的一半

matplotlib次轴,跨第一个轴的一半,matplotlib,axes,Matplotlib,Axes,我需要一个有两个y轴的图,但是第二个应该是第一个的一半 我在考虑两个不同的情节重叠,但我想有一个更简单的方法 非常感谢。您应该查看matplotlib图库。 也许你正在寻找类似或的东西 然后,如果希望ax2(右轴)跨越ax1(左轴)的一半,请获取ax1的y限制: (min_y, max_y) = ax1.get_ylim() 并相应地设置ax2限制。例如: ax2.set_ylim((min_y, max_y / 2.)) 编辑: 在您的评论之后,我制定了一个可能更适合您需要的解决方案。以下

我需要一个有两个y轴的图,但是第二个应该是第一个的一半

我在考虑两个不同的情节重叠,但我想有一个更简单的方法


非常感谢。

您应该查看matplotlib图库。
也许你正在寻找类似或的东西

然后,如果希望ax2(右轴)跨越ax1(左轴)的一半,请获取ax1的y限制:

(min_y, max_y) = ax1.get_ylim()
并相应地设置ax2限制。例如:

ax2.set_ylim((min_y, max_y / 2.))
编辑:

在您的评论之后,我制定了一个可能更适合您需要的解决方案。以下是从mpl库中修改的代码:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, 'b-')
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color='b')

for tl in ax1.get_yticklabels():
    tl.set_color('b')

ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
ax2.set_ylabel('sin', color='r')

(min_y, max_y) = ax2.get_ylim()
dist = (max_y - min_y) * 2.

ax2.set_ylim((min_y, max_y + dist))

yticklabels = ax2.get_yticklabels()
yticks = ax2.get_yticklines()

nlabels = len(yticklabels) / 2
nticks = len(yticks) / 2

for i in range(len(yticklabels)):
    if i < nlabels:
        yticklabels[i].set_color('r')
    else:
        yticklabels[i].set_visible(False)

for i in range(len(yticks)):
    if i < nticks:
        yticks[i].set_color('r')
    else:
        yticks[i].set_visible(False)

plt.show()
将numpy导入为np
将matplotlib.pyplot作为plt导入
图=plt.图()
ax1=图add_子批次(111)
t=np.arange(0.01,10.0,0.01)
s1=np.exp(t)
ax1.绘图(t,s1,'b-')
ax1.设置标签(“时间”)
ax1.set_ylabel('exp',color='b')
对于ax1中的tl。获取\u yticklabels():
tl.set_颜色('b')
ax2=ax1.twinx()
s2=np.sin(2*np.pi*t)
ax2.绘图(t、s2、r.)
ax2.set_ylabel('sin',color='r'))
(minu_y,max_y)=ax2.get_ylim()
距离=(最大值-最小值)*2。
ax2.set_ylim((最小值、最大值+距离))
yticklabels=ax2.get\u yticklabels()
yticks=ax2.get\u yticklines()
nlabels=len(yticklabels)/2
nticks=len(yticks)/2
对于范围内的i(len(yticklabels)):
如果i

这正是我需要的!非常感谢你。其实并不像我想的那么容易。。。