Understanding matplotlib xticks syntax
range is a function in python2
which makes a list for the argument given to it:
range(5) -> [0,1,2,3,4]
range(1,5) -> [1, 2, 3, 4]
in general range(lower_index, upper_index+1)
will generate a list equivalent to
[ lower_index, upper_index]
in python2
,
you can use xrange
for better performance ( as it's uses lazy evaluation, calculating when it is needed) or range
in python3
will do the work as xrange
in python2
.
now for the line:
plt.xticks([w*24*7 for w in range(10)],['week %i'%w for w in range(10)])
actually xticks
is the interval for your x axis ticks or measurement, so as your level of measurement is in hours
so it is better to tick for each hour in a week (i.e. 7 days * 24 hours
) for the week's in the data set,
and the second list comprehension put's the label's
for that one week interval( week 0, week 1 .....)
,
one point to notice is that actually the data set you have used from the book have 748 rows so approximately (748/(24*7)) = 4.45 weeks ,,
so you really can plot the graph using range(5),
the reason the output plot is scaled to week0 - week4 is because of the line
plt.autoscale(tight=True)
,
well without plt.autoscale
the plot would have shown something like this.
hope it helps.
In order to understand range, open python and write in sequence the following commands:
range(7)
range(4,8)
range(3,11,2)
For the list comprehensions within the plt.xticks, they are basically a compact way of writing loops. They are very common, useful and neat. In order to understand them:
[w*2 for w in range(10)]
[w*2 for w in range(10) if w < 4]
Finally, for the command plt.xticks itself you can check http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks for a very brief explanation with simple examples.