首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解matplotlib xticks语法

理解matplotlib xticks语法
EN

Stack Overflow用户
提问于 2013-10-17 12:47:45
回答 2查看 59.3K关注 0票数 17

我正在读一本书,我偶然发现了这样的代码:

代码语言:javascript
复制
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是一组“点击”(从用户到网站)在特定的时间。

我知道代码会累加所有的时间,以便在一周内显示它们,,但是有人能解释一下这些函数是干什么的吗?我的目标是理解这一行的所有语法:

代码语言:javascript
复制
plt.xticks([w*7*24 for w in range(10)], 
  ['week %i'%w for w in range(10)])

具体地说:

  • 什么是range

这就是生成的内容:

以下是其他上下文的示例数据:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-17 17:56:47

为了理解范围,打开python并按顺序编写以下命令:

代码语言:javascript
复制
 range(7) 
 range(4,8) 
 range(3,11,2)

对于plt.xticks中的列表理解而言,它们基本上是一种紧凑的循环编写方式。它们非常常见,有用而且整洁。为了了解这些问题:

代码语言:javascript
复制
 [w*2 for w in range(10)] 
 [w*2 for w in range(10) if w < 4] 

最后,对于命令plt.xticks本身,您可以通过简单的示例查看api.html#matplotlib.pyplot.xticks以获得非常简短的说明。

票数 8
EN

Stack Overflow用户

发布于 2015-04-28 19:18:08

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

代码语言:javascript
复制
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来完成这项工作。

现在是台词:

代码语言:javascript
复制
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,这个图就会显示出这样的结果。

希望能帮上忙。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19427188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档