我正在读一本书,我偶然发现了这样的代码:
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.title("Web traffic over the last month")
plt.xlabel("Time")
plt.ylabel("Hits/hour")
plt.xticks([w*7*24 for w in range(10)],
['week %i'%w for w in range(10)])
plt.autoscale(tight=True)
plt.grid()
plt.show()对于上下文,x是一个整数数组,对应于一个小时。y是一组“点击”(从用户到网站)在特定的时间。
我知道代码会累加所有的时间,以便在一周内显示它们,,但是有人能解释一下这些函数是干什么的吗?我的目标是理解这一行的所有语法:
plt.xticks([w*7*24 for w in range(10)],
['week %i'%w for w in range(10)])具体地说:
range?这就是生成的内容:

以下是其他上下文的示例数据:
1 2272
2 nan
3 1386
4 1365
5 1488
6 1337
7 1883
8 2283
9 1335
10 1025
11 1139
12 1477
13 1203
14 1311
15 1299
16 1494
17 1159
18 1365
19 1272
20 1246
21 1071
22 1876
23 nan
24 1410
25 925
26 1533
27 2104
28 2113
29 1993
30 1045发布于 2013-10-17 17:56:47
为了理解范围,打开python并按顺序编写以下命令:
range(7)
range(4,8)
range(3,11,2)对于plt.xticks中的列表理解而言,它们基本上是一种紧凑的循环编写方式。它们非常常见,有用而且整洁。为了了解这些问题:
[w*2 for w in range(10)]
[w*2 for w in range(10) if w < 4] 最后,对于命令plt.xticks本身,您可以通过简单的示例查看api.html#matplotlib.pyplot.xticks以获得非常简短的说明。
发布于 2015-04-28 19:18:08
range是python2中的一个函数,它为提供给它的参数列出了一个列表:
range(5) -> [0,1,2,3,4]
range(1,5) -> [1, 2, 3, 4]一般来说,range(lower_index, upper_index+1)将生成一个与python2中的[ lower_index, upper_index]等价的列表,
您可以使用xrange来获得更好的性能(因为它使用延迟评估,在需要时进行计算),或者python3中的range将作为python2中的xrange来完成这项工作。
现在是台词:
plt.xticks([w*24*7 for w in range(10)],['week %i'%w for w in range(10)])实际上,xticks是x轴滴答或测量的间隔,所以当你的测量水平以hours表示时,最好是在一周内的每一个小时(即7 days * 24 hours)数据集中,而第二个列表的理解是label's表示这一周间隔( week 0, week 1 .....),
需要注意的一点是,实际上您从书中使用的数据集有748行,因此大约(748/(24*7)) = 4.45周,
所以你真的可以用范围(5)来绘制这个图,输出图被缩放到week0 - week4是因为plt.autoscale(tight=True)行,如果没有plt.autoscale,这个图就会显示出这样的结果。

希望能帮上忙。
https://stackoverflow.com/questions/19427188
复制相似问题