I'd like to limit the y-scale for my plot with a logarithmic axis. However, adding plt.ylim((10^(-1),10^(0))) doesn't seem to change anything. Should I use a different command seeing as I'm using plt.semilogy? Below is the code and the data.
# 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
The ^ operator performs bitwise exclusive or: 10^-1 = -11, 10^0 is 10 (ref: Python operators). Use ** to raise to a power, or use the pow() function. So you could use either:
plt.ylim( (10**-1,10**0) )
or if you want to be more verbose:
plt.ylim( (pow(10,-1),pow(10,0)) )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With