0.Matplotlib小记
Matplotlib的笔记一直拖着,最近发现自己从图书馆借来的书要到期了,还是做个笔记,免得到时候要查阅又麻烦了。
import matplotlib.pyplot as plt
默认情况下,画出来的是点连成的线,针对点和线,其区分的一个较为容易的是格式的设置。
1.点和线的设置
形:
对于线来说包括:'-' 直线; ‘- -’虚线(其中中间没空格,这里为了好区分加的); ‘-.’虚线加点 ; ':'点式直线(这个记不清了)
对于点来说:‘.’小点儿 ; ‘,’ 点的形状是像素点;‘o’点是圆形的;‘v’上三角 ;‘^’下三角;‘s’方形;‘p’五角星;‘*’星形;‘+’加号;‘|’竖线;‘—’横线
色:
颜色有:‘b’--blue ‘g’--green ‘r’--red 'c'--cyan 'k'--black
2.设置x和y轴的坐标范围
plt.xlim(x1,x2)
plt.ylim(y1,y2)
plt.grid(True)//网格线
xlim和ylim设定了范围,而ax=plt.gca()之后通过ax可以设定主刻度和副刻度ax.xaxis.set_major_locotor(MultipleLocator(float)) ...set_minor_locator(y轴上的修改为y即可);除了刻度,x轴和y轴上对于同一个区间,例如0.1,可能长度不同,即axes per unit length可能不等,这时需要一句话搞定ax.set_aspect("equal")
3.图中的小图划分
对于每个图figure,可以显示多个plot,plt.subplot()可以对画布figure进行划分,例如plt.subplot(211)将画布分为了2行1列共2个区域。
可以利用plt.sca()进行subplot切换;利用plt.savefig()中的dpi属性设置其像素;利用plt.rc('font', size=8)设置全局字体大小为8;可以利用plt.xlabel()设置fontsize来设置subplot中x轴下方的字体大小
以例子:
4.一些标注
可以在右上角加上曲线或点的标注,语句:plt.plot(x,y,label="....")
此时需要执行plt.lengend()语句才能显示,当然执行legend操作的时候可以不带任何参数,也可以修改一些参数
5. 实例
借助之前的curve_fit,将点和与之拟合的曲线画出来
这里,直接把数据存储了,然后进行拟合和画线。
结果如下
其实,在进行幂律拟合的时候,拟合程度是有判定的,建议去看看这篇文章Power-law distributions in empirical data(里面有一个工具plfit,可以计算log似然估计fit值和kolmogorov-Smirnov fit值,比俺用networkx进行拟合的这小例子cool多了),继续探索,会发现老外提供了更强的的程序包(斯坦福大学的SNAP也不错),话说国内做复杂网络相关的好像只会说被人有个啥,自己用啥从来不说。
为啥人家老外啥都公开,包括数据集和程序库,咱国内不仅水平低还关门造车,让学术不外传,open不够啊,这真像古代秦晋时候的贵族豪门。