0

matplotlibで散布図を生成しています。線形スケールを使用すると、すべてが正常に機能します。

しかし、私は主に低い値に関心があるので、対数スケーリングを使用すると思いました。ただし、x軸の制限を明示的に(0,1)に設定したにもかかわらず、軸は0.1から始まるため、それより下のすべてが欠落しています。

対数軸がゼロから始まらないのはなぜですか?また、どうすれば強制的にゼロから開始できますか?

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1,100)
y = np.random.randint(1000, size=100)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x, y)

ax.set_xlim(0,1.2)
ax.set_ylim(0,1000)
ax.set_yscale('log')
ax.set_xscale('log')
ax.yaxis.set_major_formatter(plt.FormatStrFormatter('%1.0f'))
ax.xaxis.set_major_formatter(plt.FormatStrFormatter('%.1f'))
ax.xaxis.set_minor_formatter(plt.FormatStrFormatter('%.1f'))

# this red line at x = 0.1
ax.axvline(x=0.1,color='r')

plt.show()

どんな助けでも大歓迎です!

4

1 に答える 1

1

log(0)通常、対数軸はゼロから開始することはありません。これは、x-軸に「適切な」値がないためです。これは、。log(0)==xのみであるためx->-infinityです。

于 2012-09-19T13:46:38.930 に答える