之前把《利用Python进行数据分析》撸了一遍,其中就有一章专门说数据可视化的,结果这两天做数据挖掘算法实现想用Python画个图,发现脑袋空空如也。所以今天又专门找个时间把Python数据可视化再撸一遍,不过这次就要做个笔记了,下次老子看笔记,不啃书了!
一.模块简介
-
包:matplotlib,这是一个用于创建出版质量的桌面绘图包,所以你看这个图很有看老板数学教科书中的插图的意味,如果要使这个包作用完全,最好安装一个GUI工具包:ipython。
安装方法就跟一般的模块安装方法相同,使用的方法就是把>>>Python
改为>>>ipython
还有一个轻量服务器进程,启动方式是:>>>ipython notebook
或者是
jupyter notebook
这时候就会弹出个网页,接下来你就能在网页上进行交互操作了。这个进程的有点就在于你能把你的操作存档,下次可以继续进行未完成的工作,就像是虚拟机一样,存档后下次开机就会直接读取上次的信息,你就可以接着上次的页面继续工作了(还有一个作用就是能把你的存档文件发给你的同事,这样他就能直接看到你的整个操作过程) - 模块:plot,这个就是我们一直用的画图模块,我们用的figure对象和subplot方法都在这里面
二.创建图表
创建图表的第一步是创建一个画布,然后再建图表。一个画布可以存在多个图表。
创建图表的方法有三种:
首先引入包
import matplotlib.pyplot as plt
form numpy.random import randn
-
直接plot方法 这个plot就是这个plt下面的一个方法,它可以直接接受一组x和y的点画图,就像你在学函数一样,有了x有了y直接就可以整个函数图像出来
plt.plot(x,y)
plt.show()将plt当做一个画布对象,直接画图;
会有一个figure出现,如果没有结束这个figure,是不能进行下一个动作;
可以将多个动作画在同一个画布上; -
建立对象figure
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(x,y)||ax.hist(x)#(画一个直方图)
fig.show()创建一个新的fig对象,当做一个画布;
add_subplot添加子图,再进一步设置图画;
可以一个画布上出现多个图 -
直接用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数据来画图会有更好的方法。