我的小白python代码(九)数据绘图
今天也是没有迟到没有睡觉的一节python课(我觉得这节课如果睡了的话可能就跟不上了……)
讲的内容主要是py绘图
课前先点了一下惰性运算,还是之前的那个函数
def a():
……
b():
……
def b():
……
a()
这样一个代码块是可以被允许的(在使用函数a之前定义函数b即可)
然后老师分享了一个我知道但是真的(发自内心很赞同的)一个dubugの 土 办法 (简言之,就是看报错提示 & 善于使用print)第二点的话细讲就是多输出对象/对象的属性/还有利用print判断程序运行的程度(真的超级有用,wjd,加粗了,铭记)
下面是正题,话题转换十分生硬自然
python作为一个神奇的语言,拥有很多库,可以用matplotlib库绘图也可以直接用pandas绘图(当然这是后话)
首先是matplotlib绘图,先载入,也就是 import matplotlib.pyplot as plt
载入之后就可以创建图片直接开始绘图了
也就是说 = 》
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.arange(10))
fig.show()
但是这个我在实验课上自己操作的时候出现了一点问题,使用show方法运行代码的话得到的t绘图一闪而过,只留下一道潇洒的瞬间,不留痕迹。(解决办法:传送门)
继续,完了之后画出来的图片以及相应解释如下所示:
所以得到了参数解释的话,我们就可以在fig上面建立很多个subplot,而且还智能排序,这就很方便(个人觉得)
还可以对subplot的间距进行手动调整,fig.subplots_adjust(wspace=0.5)
,py给你留了很多参数接口(用不用都在那里,比如 left/right/bottom/hspace/wspace等等)
除了折线图ax.plot()
之外还有很多其他图,比如柱形图ax.hist()
散点图ax.scatter()
等
以折线图为例子可以设置的参数有 线型、颜色、点标志等等举个栗子:ax.plot(random(50),cumsum(),linestyle='--',color='g',maker='o'
顺带颜色的话可以设置成RGB格式
还有一种快捷方式对应上面的写法就是ax.plot(random(50),cumsum(),'go--')
然后还可以自定义坐标轴范围 比如,ax.set_xlim([0,100])
y轴的话就是ax.set_ylim([-1,1])
设置标题标签 比如ax1.set_title(fig 1‘)
设置轴标签 比如ax1.set_xlabel('Step') ax1.set_ylabel('Value')
设置具体刻度比如ticks = ax1.set_xticks([0,20,40,60,80,100])
还有设置刻度标签 比如 labels = ax1.set_xticklabels([‘zero’, ‘one’, ‘two’, ‘three’, ‘four’, ‘five’], rotation = 30)
还可以添加别的一些形状 比如长方形 rect = plt.Rectangle((0.2,0.75), 0.4, 0.15, color = ‘g’, alpha = 0.2)
然后可以通过add_patch方法加到fig里面去 ax.add_patch(rect)
然后还有保存图片的操作 这里用保存成svg矢量图格式举例fig.savefig(‘xxx.svg’, dpi = 400, bbox_inches = ‘tight’)
(讲到这里老师讲了很多关于矢量图和位图的知识,还在电脑上用Photoshop花了一个半矢量性质的位图文件大概是这个样子,讲人话就是利用贝塞尔曲线画了一个♥,大概是这样↓)
言归正传,讲一下py绘图的有点,总结起来就是两点,第一就是准确性高(画的比较精准;第二就是画多张图片容易对齐
终于,讲到pandas绘图了其实老师也没有细讲,这里就放个例子好了(自行领会:
from pandas import Series, DataFrame
import pandas as pd
df = DataFrame(randn(10,4).cumsum(0), columns = [‘A’, ‘B’, ‘C’, ‘D’], index = np.arrange(0,100,10))
df.plot()
课程内容结束,祝各位在py绘图的道路上越走越远
推荐阅读