非技术文集Python学习系列程序员

matplotlib学习【1】:为什么4的平方是25

2018-05-07  本文已影响183人  f63f6a5e04e2

无聊学学python,前几天在照本宣科copy一个alien_invasion的小游戏,然后copy了几天觉得没意思,于是进入下一章,数据可视化,第一步,是安装matplotlib,由于网速太慢,我只好看完了《西部世界II》第三集,然后夜深了,网速好点了,才安装好的。

看着安装完成的界面,有点太开心,不试一下,今晚应该也没法安眠,于是就继续打开课本,继续照本宣科,copy代码:

import matplotlib.pyplot as plt
squares = [1, 4, 9, 16, 25]
# 设置线条粗细
plt.plot(squares, linewidth=3)
# 设置图表标题,并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()

然后F5一下就神奇地出现了一张图:

matplotlib自动生成的图

O(∩_∩)O哈哈~看到这种神奇地出现的图形还是蛮开心的,其实根本没有心思认真去看图,只不过正想继续copy书上的代码的时候,作者提醒:我们发现没有正确地绘制数据:拆线图的终点指出4的平方为25!

认真一看图,还真是!为什么它会有这么智能的错误呢?然后再回头想一下,代码明明只给了一串数字,它怎么就能画出一个二维的图形来呢?二维图形的每个点不都应该是<x,y>这样的二元数据吗?给出的数据点不是二元数据的时候,它是如何去设置另一个数字的呢?先看一下matplotlib官方的对于plot方法的指示:
>>> plot(x,y)# plot x and y using default line style and color
>>> plot(x,y,'bo')# plot x and y using blue circle markers
>>> plot(y)# plot y using x as index array 0..N-1
>>> plot(y,'r+')# ditto, but with red plusses
官方文档中plot方法有四种传参方式,其中第三种就是我们上面用到的,也就是说当我们只有一串数字作为入参的时候,它会默认这串数字是绘图数据点的y坐标,而缺失的x坐标将会默认使用从0开始的自然数,因而我们上面的例子中用到的数据点坐标依次就是:<0, 1>, <1, 4>, <2, 9>, <3, 16>, <4, 25>,所以就画出了4的平方是25的一张图。

如果希望图画正确,也很简单,最简单的就是上面代码段中使用的绘图数据变量从0开始,即squares = [0, 1, 4, 9, 16, 25];也可以使用完整的数据,即既有y坐标数据集也有x坐标数据集,即使用plot方法的前两种调用方式:

仍旧仅传入y坐标 传入x坐标和y坐标

以上两种方式都正确画出了图形。

没啥技术含量,就是想记录下学习过程。数据挖掘的道路距离我还相当远,新建一个学习的专题,希望这个专题不会中道崩殂……唉,不能建太多专题,已经写不过来了……

上一篇下一篇

猜你喜欢

热点阅读