2

対数スケールでプロットしようとしていますが、問題があります。

from pylab import *
import matplotlib.pyplot  as pyplot

Ds = pow(10,5)
D = np.linspace(0, pow(10,6), 6)
alpha=1.44
beta=0.44
A=alpha*pow((D/Ds), beta)
L=1.65
a=exp(-(A*L/4.343))
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.set_xscale('log')
xlim(0.001,1)
ylim(0.1,1)
ax.grid()
line, = ax.plot(D/(Ds),a, color='blue', lw=2, marker='o')
show()

しかし、x軸の値ラベルと目盛りを設定することはできません。y軸を0から1の間で0.1刻みで表示したいです。0.001 0.002 0.003 0.004 0.005....0.01 0.02 0.03 のように対数スケールで 0 から 10 の間を表示する x 軸 ... などですが、できませんか?

set_xscale は、目盛りと値のラベルを自動化します。

4

1 に答える 1

2

はい、次のようにできます。

import numpy as np
xticks = [0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.02, 0.03, 0.04, 0.05,
          0.1, 0.2, 0.3, 0.4, 0.5, 1., 2., 3., 4., 5., 10.]
yticks = np.arange(0,1,0.1)
ax.xaxis.set_ticks( xticks )
ax.yaxis.set_ticks( yticks )

指定されたすべての位置にラベルを強制するには、set_ticklabels()メソッドを使用できます。ここでは、文字列形式も制御できます。

ax.xaxis.set_ticklabels( ['%1.e'  % i for i in xticks] )
ax.yaxis.set_ticklabels( ['%1.1f' % i for i in yticks] )
于 2013-06-09T20:30:26.557 に答える