我需要在matplotlib中绘制一个图,其中两个轴始终具有相同的长度。为此,我使用了“equal”选项。在大多数情况下,它工作得非常好,我得到了预期的结果(请参见图1),但是当y轴的值比x轴高得多时,图表显示出意外的行为(请参见图2)。有没有人知道matplotlib的这种行为?
谢谢,Jörg
host = SubplotHost(fig, 111)
try:
min_x_val = min(x for x in self.x_values if x is not None)
max_x_val = max(self.x_values)
except ValueError:
return
max_y_val = list()
for n, evaluator in enumerate(self.cleaned_evaluators):
max_y_val.append(max(self.y_values[n]))
# axis settings
host.axis['left'].label.set_fontsize('small')
host.axis['left'].major_ticklabels.set_fontsize('small')
host.axis['bottom'].label.set_fontsize('small')
host.axis['bottom'].major_ticklabels.set_fontsize('small')
host.axis['bottom'].major_ticklabels.set_rotation(0)
host.set_ylabel(y_label)
host.set_xlabel(x_label)
host.set_xlim(0, max_x_val)
host.set_ylim(0, max_y_val)
host.minorticks_on()
host.toggle_axisline(False)
host.axes.set_aspect('equal')
host.grid(True, alpha=0.4)
return fig
图1:
图2:
set_aspect('equal')
的意思是,在您的图1中可以看到,x轴上的一个单位长度与y轴上的一个单位长度相等。 - soddset_aspect
,请参阅文档。通过取x
和y
的商,您应该能够缩放轴,使它们具有相同的长度。 - Bakuriuset_aspect('equal')
强制为两个轴使用相同的数据缩放(每像素数据值)。 - Peter Erwin