【有书共读12】跟老齐学Python数据分析读书笔记9
一、曲线的绘制
生活中,和我们关系最密切的可能就是曲线了,python中怎么绘制曲线呢?其实就是用了“很多”个满足某一曲线的点在图上描绘,让人“看起来”像是一条平滑的曲线,数量越多,就越平滑。具体可以通过matplotlib.pylab.plot()函数来实现,以描绘正弦函数图像y=sin(x)为例,过程如下:
上图的代码大致思路就是先存放100个横坐标到x数组中,然后在建立其对应的正弦函数值在y数组中,然后plot函数接收的第一个参数就是横坐标,第二个参数是纵坐标,设定颜色参数为‘blue’即可使用蓝色线条将正弦函数描绘出来。
1.颜色参数:color
事实上,上述的颜色color参数在整个matplotlib都是通用的,不然区别太多使用就会非常不方便,具体可以赋值"b, g, r, c, m, y, k, w"任意一个,对应着的颜色的英文是“blue, green, red, cyan, magenta, yellow, black, white”。还有,如果在一个图像上描绘多条曲线,如果不指明颜色的使用,就会按照"b, g, r, c, m, y, k, w"的排列顺序,进行循环使用。
2.线条样式参数:linestyle
matplotlib的线条常用的有3种——加粗线、虚线、点线和虚点线,对应参数为"-"、"--"、“-.”和":",线条描述可能有点抽象,大家可以看下面的实例:
3.点的形状:maker
一开始我们就说过,matplotlib的画线是将一个一个点描绘在图上,而使人看起来像一条完整的线,所以点就应该是这种线的一个部分,也就说明plot函数有专门定义其属性的参数,如将点设置为比较大的圆形。
恩,上图看起来线条颜色和点的颜色重合了,没事,我们可以通过设置参数markerfacecolor的值来单独定义点的颜色。为了让大家看导的点更加清楚,通过代码“plt.grid(True)”即可使用网格图,效果就像上面的一样。
随着介绍的越多,我们越来越发现这参数好多,导致一行代码会很长,为了减少代码量,matplotlib支持将linestyle、marker和color三个参数写到一起,并作为第二个参数,如画一条红色虚线+蓝色圆点,可以编写以下代码:
之前我们也说到,为了使曲线更加平滑,我们会描绘更多的在曲线上的点,如果这个时候还去将每个点的大小和颜色自定义,那就感觉有点做无用功了。自然而然,matplotlib也考虑到了这个问题,让我们通过设定markevery参数来选择性的自定义点的样式,如对上图,我只要第2、4、6个点使用我的自定义样式,可以这样写:
4.线段的粗细:linewidth
既然点可以通过markersize来控制大小,自然也有参数来控制线条的粗细,那就是参数linewidth,使用方法和markersize类似,具体使用可以对比下面两个曲线:
二、图例
虽然曲线能很有效的显示数据的变化特征,但如果曲线失去了数据的含义,那也就没什么意义了,也就是为了更好的描述数据曲线,我们应该为其添加说明,这就是图例。在matplotlib中,是通过pyplot.legend()函数来实现对图例的操控,如我们在右上角为下述3条曲线添加其对应的注释,过程如下图所示:
上述的loc参数就指明了图例的位置应该在右上角,其更多位置值,以及其他诸如图例字体、边框、背景和标题等参数如下图所示:
三、散点图
尽管曲线能够很好的可视化我们的数据,但是在实际生活中,我们往往不知道数据之间的函数关系,这个时候,我们可能仅仅需要将所有的点描绘在图上即可,这种图就是散点图,在matplotlib中可以通过scatter函数来构造散点图,下面举一个最基本的使用:
其中rng是一个伪随机数发生器,我们将通过此对象的方法获取随机数,rng.randn(100)是获取100个符合高斯正态分布的随机数,rng.rand(100)是获取100个不小于0且小于1的浮点数,plt.colorbar()就是上图右边那个东西,大致就是表示什么颜色代表的数值是什么吧,生活中这样的应用我们获取在热力图等方面见得比较多。