了解matplotlib xticks语法

时间:2013-10-17 12:47:46

标签: python matplotlib scipy

我正在读一本书,但我发现了这段代码:

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

这是生成的: enter image description here

以下是其他背景的示例数据:

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

2 个答案:

答案 0 :(得分:11)

range是python2中的一个函数,它为给定的参数列出了一个列表:

range(5) -> [0,1,2,3,4]
range(1,5) -> [1, 2, 3, 4]

一般range(lower_index, upper_index+1)会生成相当于的列表 [ lower_index, upper_index]中的python2

您可以使用xrange来获得更好的效果(因为它使用延迟评估,计算何时需要)或range中的python3将以{{{{1}进行工作1}} xrange

现在换行:

python2

实际上plt.xticks([w*24*7 for w in range(10)],['week %i'%w for w in range(10)]) 是x轴刻度或测量的间隔,因此您的测量水平在xticks中,因此最好在一周内每小时计算一次(即{{1对于数据集中的一周来说, 并且第二个列表理解为这一周的间隔hours提供7 days * 24 hours

要注意的一点是,实际上你从书中使用的数据集有748行,所以大约(748 /(24 * 7))= 4.45周,

所以你真的可以使用范围(5)绘制图形, 输出图缩放到第0周 - 第4周的原因是因为该线 label's, 如果没有( week 0, week 1 .....),情节就会显示出这样的结果。wihtout plt.autoscale(tight=True) and plt.grid()

希望它有所帮助。

答案 1 :(得分:7)

为了理解范围,打开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本身,您可以通过简单示例检查http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks以获得非常简短的解释。