如何在Python中创建方形半对数图(相等维度的轴)?

时间:2015-03-12 04:24:58

标签: python matplotlib plot

我试图在半对数刻度上创建方形图(等轴长度),但我没有运气。谁能帮我这个。对于log-log scale我使用了这个函数:

def set_aspect_ratio_log(plot, aspect_ratio):
    x_min, x_max = plot.get_xlim()
    y_min, y_max = plot.get_ylim()
    return plot.set_aspect(aspect_ratio * ((math.log10(x_max / x_min)) / (math.log10(y_max / y_min)))

但是我如何在matplotlib中进行半对数图。

更新

import matplotlib.pyplot as plt
x = [12.4, 18.2, 20.3, 22.9, 27.7, 35.5, 53.9]
y = [1, 500, 600, 700, 800, 900, 1000]
fig = plt.figure(figsize=(3, 3))
fig.clf()
plot = plt.subplot(111)
plot.plot(x, y, linestyle = ':', marker='^', label='label')
plt.xscale('log')
plot.set_ylabel('y')
plot.set_xlabel('x')
plot.legend(title = 'Legend', loc = 'center left', bbox_to_anchor = (1.025, 0.5))
fig.savefig('plot.pdf', bbox_inches='tight')

我用这段代码得到的输出数据:

enter image description here

测量浅灰色区域的尺寸,我发现它们不相等。

1 个答案:

答案 0 :(得分:0)

因此,您似乎希望轴的物理长度相等。在这种情况下,你为什么不设置figsize?例如

import pylab
pylab.figure( figsize=(3,3) )

我应该注意看起来set_aspect对semilog图没有任何作用。它不太清楚它会做什么:set_aspect的要点是设置与数据比例相关的宽高比。例如,set_aspect(1)将使x轴上的1个单位与y轴上的1个单位相同。如果数据比例不相同,则不清楚该纵横比的含义。