1、为何要学习matplotlib?linux
(1)可以将数据进行可视化。windows
(2)使数据更加直观、更具说服力。dom
2、什么是matplotlibsvg
底层绘图库,主要作数据可视化图表,名称取材于MATLAB,模仿MATLAB构建函数
3、Matplotlib基本要点学习
一、测试
(1)红色的点是坐标点,有点无线散点图,有线无点折线图。字体
二、假设一天中每隔两小时(range(2,26,2))的气温分别是[15,13,14.5,17,20,25,26,27,22,18,15]优化
(1)若是咱们把气温视做y轴坐标,时间视为x轴坐标,二者相应的数据个数必须是一一对应的。spa
(2)range函数能够取步长但range不能代替列表,后面会详细讲到。
(3)在绘图前要准备好两轴的数据(可迭代对象)
三、matplotlib下有专用的模块pyplot模块帮助绘制图形,导入规则:
(1)plot函数会帮助咱们将数据一一对应,不须要手动去对应(绘制的是折线图),对应前面的那句话:x和y轴数据个数必须一一对应。
(2)show函数会帮助咱们将图形展现出来
四、matplotlib会自动帮咱们设置刻度、图形大小等图形元素,咱们能够本身修改
目前存在问题:
(1)设置图片大小(高清无码的大图)
(2)保存到本地
(3)描述信息,好比x轴和y轴表示什么,这个图的标题是什么
(4)调整x或者y的刻度的间距
(5)线条的样式(好比颜色,透明度等)
(6)标记出特殊的点(最低点和最高点等)
(7)给图片添加水印(防止盗用)
五、设置图片大小
(1)调用figure方法,figsize表示设置图片的宽和高,dpi表示每英寸点的个数,调整图片的清晰度
六、图片的保存
(1)绘制以后保存,savefig方法设置保存的地址,能够保存为svg矢量图格式,在网页中放大不会产生失真
七、设置刻度
(1)xticks()能够设置x的刻度,若是直接传入x,它会将每一个x的刻度都传入进去做为x轴,也能够手动传入列表设置刻度(建立列表手动设置步长,在传入列表后还能够二次设置步长)
(2)yticks()能够设置y的刻度,咱们一般将y轴最大值和最小值引入表明最高刻度和最低刻度。
from matplotlib import pyplot as plt #数据在x轴的位置,是一个可迭代对象 x = range(2,26,2) #数据在y轴的位置,是一个可迭代的对象.与x轴元素的个数一一对应 y = [15,13,14.5,17,20,25,26,26,24,22,18,15] #设置图片大小 plt.figure(figsize=(20,8),dpi=80) #绘制图形 plt.plot(x,y) #设置x轴刻度 _xtick_labels = [i/2 for i in range(4,49)] #建立列表做为初始刻度 plt.xticks(_xtick_labels[::3]) #二次设置步长规定本身想要的效果 #设置y轴刻度 plt.yticks(range(min(y),max(y)+1)) #保存图片 # plt.savefig("./t1.png") #展现图形 plt.show()
八、小测试1:若是列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化状况 a = [random.randint(20,35) for I in range(120)]
九、优化图像:对于上面的气温变化图像,咱们须要将横坐标修改成字符串形式的时间轴。之因此在xticks中传入两个参数是为了让数字和字符串之间造成对应。range函数返回的是一个可迭代对象,但这个对象并不是列表,因此要用list()将可迭代对象转化为列表进行对应操做。(注:在没有用到字符串形式的时候不须要考虑,x轴的刻度能够随意规定)
十、设置中文显示:
(1)第一种方法(适用于windows、linux):
(2)我采用了一劳永逸的方法,直接修改matplotlib的内置文件
###############第一步###################
将中文字体复制到matplotlib的字体目录中
matplotlib默认安装在 %PythonPath%\Lib\site-packages 目录下。复制微软雅黑字体到 %PythonPath%\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\ 中
###############第一步################### 配置文件matplotlibrc,以下图方式修改便可。
十一、添加描述信息
(1)x轴标签的添加调用函数xlabel()
(2)y轴标签的添加调用函数ylabel()
(3)图标题的添加调用函数titile()
from matplotlib import pyplot as plt import random import matplotlib x = range(0,120) y = [random.randint(20,35) for i in range(120)] plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y) #设置x轴刻度 _xtick_labels = ["10点{}分".format(i) for i in range(60)] _xtick_labels += ["11点{}分".format(i) for i in range(60)] #取步长,数字和字符串一一对应,数据的长度同样 plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45) #添加描述信息 plt.xlabel("时间") plt.ylabel("温度 单位(℃)") plt.title("10到12点每3分钟的气温变化状况") plt.show()
十二、小测验2:(图例部分看后面一章节学习后再进行)
假设你们在30岁的时候,根据本身的实际状况,统计出来了你和你同桌各自从11岁到30岁每一年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较本身和同桌20年间的差别,同时分析每一年交女(男)朋友的数量走势。
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
要求:
(1) y轴表示个数。
(2) x轴表示岁数,好比11岁,12岁等。
(3) 自定义绘制图形的风格。
(4) 每条线添加图例。
from matplotlib import pyplot as plt x = range(11,31) a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1] plt.figure(figsize=(20,15),dpi=80) plt.plot(x,a,label='你') plt.plot(x,b,label='你的同桌') _xtick_labels = [i for i in range(11,31)] plt.xticks(_xtick_labels) plt.yticks(range(min(b),max(a)+1)) plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=3, mode="None", borderaxespad=0.) plt.xlabel("岁数") plt.ylabel("个数") plt.title("11岁到30岁每一年交的女(男)朋友的数量") plt.show()