2015-04-22 294 views
-1

我想用對數座標軸限制我的座標軸的y軸座標。但是,添加plt.ylim((10^(-1),10^(0)))似乎沒有任何改變。我是否應該使用不同的命令,因爲我正在使用plt.semilogy?以下是代碼和數據。設置對數座標軸的y軸極限(使用plt.semilogy)

# Generate loss plots 
    # --------------- Latex Plot Beautification -------------------------- 
    fig_width_pt = 492.0 #246.0 # Get this from LaTeX using \showthe\columnwidth 
    inches_per_pt = 1.0/72.27    # Convert pt to inch 
    golden_mean = (np.sqrt(5)-1.0)/2.0   # Aesthetic ratio 
    fig_width = fig_width_pt*inches_per_pt # width in inches 
    fig_height = fig_width*golden_mean  # height in inches 
    fig_size = [fig_width+1,fig_height+1] 
    params = {'backend': 'ps', 
       'axes.labelsize': 12, 
       'font.size': 12, 
       'legend.fontsize': 10, 
       'xtick.labelsize': 10, 
       'ytick.labelsize': 10, 
       'text.usetex': False, 
       'figure.figsize': fig_size} 
    plt.rcParams.update(params) 
    # --------------- Latex Plot Beautification -------------------------- 

    train = {} 

    tmp = list() 
    with open('loss.csv', 'rb') as csv_file: 
     reader = csv.reader(csv_file) 
     for i, row in enumerate(reader): 
      if i != 0: 
       tmp.append(row) 


    tmp  = np.array(tmp)  

    train['iters'], train['seconds'], train['loss'], train['learn_rate'] = tmp[:,0], tmp[:,1], tmp[:,2], tmp[:,3] 

    plt.subplot(211) 
    plt.semilogy(train['iters'],train['loss'],'b',lw=2) 
    plt.ylabel('loss') 
    plt.ylim((10^(-1),10^(0))) 

    plt.subplot(212) 
    plt.semilogy(train['iters'],train['learn_rate'],'b',lw=2) 
    plt.xlabel('iterations') 
    plt.ylabel('learning rate') 

    plt.show() 

loss.csv

NumIters,Seconds,TrainingLoss,LearningRate 
    0.0,0.486213,0.693148,nan 
    1000.0,7.557165,0.0961085,0.05 
    2000.0,14.041684,0.00384812,0.05 
    3000.0,20.410506,7.34072,0.05 
    4000.0,26.772446,4.78843,0.05 
    5000.0,34.117291,2.45869,0.05 
    6000.0,40.249146,0.179548,0.05 
    7000.0,46.377004,0.0033729,0.05 
    8000.0,52.499923,0.00020626,0.05 
    9000.0,59.317026,2.0962,0.05 
    10000.0,66.679739,1.20523,0.05 
    11000.0,72.846874,0.00894074,0.05 
    12000.0,78.87727,2.37395,0.05 
    13000.0,84.950737,0.00172985,0.05 
    14000.0,91.036988,8.13143,0.05 
    15000.0,98.153062,2.90689,0.05 
    16000.0,104.252995,1.78791,0.05 
    17000.0,110.286827,5.10336,0.05 
    18000.0,116.47252,3.34482,0.05 
    19000.0,122.683825,0.00838974,0.05 
    20000.0,129.637347,0.00341582,0.05 
    21000.0,135.640689,1.66777,0.05 
    22000.0,141.66995,3.30503,0.05 
    23000.0,147.721727,2.53775,0.05 
    24000.0,154.084407,1.35748,0.05 
    25000.0,161.426044,2.28748,0.05 
    26000.0,168.492162,0.00397386,0.05 
    27000.0,174.669545,0.000113542,0.05 
    28000.0,180.803535,2.5192,0.05 
    29000.0,187.004627,0.0019179,0.05 
    30000.0,194.150244,4.36825,0.05 
    31000.0,200.404565,1.38513,0.05 
    32000.0,206.412659,0.0108084,0.05 
    33000.0,212.437014,6.41096,0.05 
    34000.0,218.56177,0.000235395,0.05 
    35000.0,225.853988,7.88834,0.05 
    36000.0,231.888062,0.00109338,0.05 
    37000.0,238.976116,4.46498,0.05 
    38000.0,246.112036,0.00246135,0.05 
    39000.0,252.92424,0.00154073,0.05 
    40000.0,261.114472,1.49658,0.05 
    41000.0,268.695987,3.09471,0.05 
    42000.0,275.331985,0.000266829,0.05 
    43000.0,282.34568,1.06778,0.05 
    44000.0,290.059307,5.98044,0.05 
    45000.0,299.376506,0.00154176,0.05 
    46000.0,306.722876,9.46019,0.05 
    47000.0,314.33918,1.1353,0.05 
    48000.0,321.358202,7.14507,0.05 
    49000.0,328.710997,1.00035,0.05 
    50000.0,335.206681,4.40056,0.05 

回答

4

^運算符執行按位異或:10^-1 = -11,10^0爲10(參考文獻:Python operators)。使用**提高功率,或使用pow()函數。所以,你可以使用兩種:

plt.ylim((10**-1,10**0)) 

,或者如果您想更詳細:

plt.ylim((pow(10,-1),pow(10,0)))