当我使用matplotlib绘制某些数据而未设置任何参数时,将在正确设置x和y轴限制的情况下绘制数据,这意味着将显示所有数据,并且不会浪费任何空间(情况1):

import matplotlib
matplotlib.use('QT5Agg')
import matplotlib.pyplot as plt
x = range(10)

plt.plot(x,'-o',markersize='10')

plt.tight_layout()
plt.show()


结果:

python - 最初绘制正确设置所有轴的数据时执行的matplotlib函数的名称是什么?-LMLPHP

如果我为e设置了一些限制。 G。 x轴,即使使用autoscale()也不会自动缩放y轴(情况2):

import matplotlib
matplotlib.use('QT5Agg')
import matplotlib.pyplot as plt
x = range(10)

plt.plot(x,'-o',markersize='10')
plt.autoscale(enable=True,axis='y')
plt.xlim(7.5,11)
plt.tight_layout()
plt.show()


结果:

python - 最初绘制正确设置所有轴的数据时执行的matplotlib函数的名称是什么?-LMLPHP

问题:matplotlib在内部使用哪个函数来确定两个轴的极限并在情况1下更新绘图?

背景:我想将此功能用作案例2的重新实现/扩展此功能的基础。

最佳答案

正如@ImportanceOfBeingEarnest在下面的答案中指出的那样,目前还没有这种自动方式。因此,如果您想知道如何重新调整y轴,一种方法是重新计算相应的y值,然后使用this未接受的答案中指定的方法重新分配y限制。我没有将其标记为重复项,因为您的示例中存在某些不同的问题:


首先(主要),您仅绘制了x值。因此,要在其他答案中应用该方法,我必须首先获取数组中的y值。这是使用get_ydata()完成的
其次,将x值从range()生成器更改为NumPy数组,因为前者不支持索引。
第三,我必须对x限制使用变量,以使其与函数一致。




import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)

plt.plot(x,'-o',markersize='10')
x_lims = [7.5, 11]
plt.xlim(x_lims)

ax = plt.gca()
y = ax.lines[0].get_ydata()

def find_nearest(array,value):
    idx = (np.abs(array-value)).argmin()
    return idx

y_low = y[find_nearest(x, x_lims[0])]
y_high = y[find_nearest(x, x_lims[1])]
ax.set_ylim(y_low, y_high)

plt.tight_layout()
plt.show()


python - 最初绘制正确设置所有轴的数据时执行的matplotlib函数的名称是什么?-LMLPHP

关于python - 最初绘制正确设置所有轴的数据时执行的matplotlib函数的名称是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56478774/

10-12 17:03
查看更多