python画图——matplotlib.plot 学习

来源:互联网 发布:java是操作系统吗 编辑:程序博客网 时间:2024/06/05 18:20

之前把《利用Python进行数据分析》撸了一遍,其中就有一章专门说数据可视化的,结果这两天做数据挖掘算法实现想用Python画个图,发现脑袋空空如也。所以今天又专门找个时间把Python数据可视化再撸一遍,不过这次就要做个笔记了,下次老子看笔记,不啃书了!

一.模块简介

  • 包:matplotlib,这是一个用于创建出版质量的桌面绘图包,所以你看这个图很有看老板数学教科书中的插图的意味,如果要使这个包作用完全,最好安装一个GUI工具包:ipython。
    安装方法就跟一般的模块安装方法相同,使用的方法就是把
    >>>Python
    改为
    >>>ipython
    还有一个轻量服务器进程,启动方式是:

    >>>ipython notebook 

    或者是
    jupyter notebook
    这时候就会弹出个网页,接下来你就能在网页上进行交互操作了。这个进程的有点就在于你能把你的操作存档,下次可以继续进行未完成的工作,就像是虚拟机一样,存档后下次开机就会直接读取上次的信息,你就可以接着上次的页面继续工作了(还有一个作用就是能把你的存档文件发给你的同事,这样他就能直接看到你的整个操作过程)

  • 模块:plot,这个就是我们一直用的画图模块,我们用的figure对象和subplot方法都在这里面

二.创建图表

创建图表的第一步是创建一个画布,然后再建图表。一个画布可以存在多个图表。
创建图表的方法有三种:
首先引入包

import matplotlib.pyplot as pltform numpy.random import randn
  1. 直接plot方法 这个plot就是这个plt下面的一个方法,它可以直接接受一组x和y的点画图,就像你在学函数一样,有了x有了y直接就可以整个函数图像出来

        plt.plot(x,y)      plt.show() 

    将plt当做一个画布对象,直接画图;
    会有一个figure出现,如果没有结束这个figure,是不能进行下一个动作;
    可以将多个动作画在同一个画布上;

  2. 建立对象figure

        fig=plt.figure()      ax=fig.add_subplot(1,1,1)       ax.plot(x,y)||ax.hist(x)#(画一个直方图)       fig.show() 

    创建一个新的fig对象,当做一个画布;
    add_subplot添加子图,再进一步设置图画;
    可以一个画布上出现多个图

  3. 直接用subplot方法

        figs,axes=plt.subplots(1,1,**kwargs)      axes[i].plot(x,y)||axes[i].hist(x)      figs.show()

    利用subplot方法同事创建一个figure新对象和axes数组 对数组的元素操作即对每幅图操作 可以很方便的操作每幅图(推荐)

对比上面三种方法可以知道:第一种方法就是画图的方法;第二种方法是先建立figure对象,再利用add_subplot的方法建立几个子图再用第一种方法画图;第三种方法最为直接和方便,直接里用plt.subplots的方法建立子图并返回figure对象和子图的数组。
如果是画一个图表练习练习的话那就用第一种方法,简单直接粗暴,如果是要一次建好几个图表那就用第三种方法,还可以索引出你想用的那个图表

三.给图表添砖加瓦

建立了图表,接下来就是给图表加注释、说明,调整横轴大小区间等主要是通过set_*这个方法来实现的
设立坐标轴
set_xlim 设立坐标轴的最大值和最小值
set_xticks 设立坐标轴上的间隔区间
set_xticklabels 设立坐标轴上的间隔名称
set_xlabel 设立坐标轴的名称
设立注释
text 设立文本注释(可以将注释内容定位在(x,y)坐标上)
arrow 设立箭头注释
annotate 设立注释内容
设立图例
在书中说有两种设立图例的方法,但我就实验出来一种

fig=plt.figure()ax=fig.add_subplot(1,1,1)ax.plot(randn(1000).cumsum(),'k--',label='one')ax.plot(randn(1000).cumsum(),'k.',label='two')ax.plot(randn(1000).cumsum(),'k',label='three')

这样就把图和图例都弄出来了,但是图例还没有显示出来,接下来就是显示图例

ax.legend(loc='best')

loc=’best’可以将图例放在最合适的位置,你也可以设置为‘right’‘center’等
这是在学习的时候使用的图,仅供参考
实验用的四幅图,比较粗糙

四.后续

这个才是刚刚开始,能画出图,但画出自己想要的图还有点困难,如果用pandans中的DataFrame和Series数据来画图会有更好的方法。

0 1