Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。作为数据分析新手,我们可以用他来配合Pandas模块生成一些简单的统计图。
通常我们会用plt和np作为简写,这样子方便我们之后代码编写
import matplotlib.pyplot as plt
import numpy as np
先看代码
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-5,5,40)
y=x**2
plt.figure()
plt.plot(x,y)
plt.show()
plt.show()是每次绘图必不可少的函数,他写在代码的最后,只有调用这个函数,才能显示出图像
plt.plot()用于绘制线形图,里面需要填入两个参数,一个存放横坐标,一个存放纵坐标。
np.linspace(横坐标最小值,横坐标最大值,横坐标一格分成的格数)通过这个方法我们就基本确定了x轴的各个值,然后利用y=x**2,把x轴上每一个值的平方存到变量y。
plt.figure()的作用是创建一个类似于画布的图层,只有创建了他,才能继续之后的绘图。
通过上述代码我们得到了以下图像:
在plot()的括号里我们可以填入许多参数,来调整绘制出的线形图的样式
参数c也就是color,用于设置图像的颜色。
参数ls也就是line style,用于设置图像风格。
具体参考下图
示例如下
plt.plot(x,y,c='g',ls="--")
这样可以把线的颜色改成绿色,线型改成虚线
参数marker用来设置线上的点点的样式,有“+” ”,” “*” “^” “:” 等等
参数linewidth用来设置线的粗细
示例如下:
plt.plot(x,y,c='k',marker="^",linewidth=2)
这样可以得到以下图像:颜色为黑色,线上加上三角形的点点,线粗细设置为2
在figure()函数中也可以填入参数figsize从而改变图表总体大小
具体格式如下
plt.figure(figsize=(2,5))
括号内填入的是图像的长宽比例,前者是x轴方向,后者是y轴方向
利用plt.xlim()和plt.ylim()可分别设置x轴和y轴的取值范围
示例如下
x=np.linspace(-5,5,40)
y=x**2
plt.figure()#创建一个图表
plt.plot(x,y,c="c",linestyle="-.",linewidth=4)#确定当前图表的横纵坐标等参数
plt.xlim(-4,4)#设置x轴取值范围
plt.ylim(0,20)#设置y轴取值范围
plt.show()#呈现图表
为了给图表赋予更多的含义,我们可以加上图表的标题和坐标轴的标签
plt.title()用于添加标题,直接将要添加的标题填入括号里
plt.xlabel()和plt.ylabel()可以设置坐标轴上的标签
plt.xticks()和plt.yticks()可设置轴上每个点的具体名称
来看下面示例:
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']#设置中文显示
x=np.linspace(-5,5,40)
y=x**2
plt.figure()#创建一个图表
plt.title("速度变化曲线图")#设置图表标题
plt.plot(x,y,c="yellowgreen",linestyle=":",linewidth=4)#确定当前图表的横纵坐标等参数
plt.xlim(0,4)#设置x轴取值范围
plt.ylim(0,20)#设置y轴取值范围
plt.yticks([2.5,7.5,12.5,17.5],["slow","normal","$fast$","$very\ fast$"])#设置y轴上的点对应的名称
plt.xlabel("time(s)")#设置x轴的标签
plt.ylabel("speed(m/s)")#设置y轴的标签
plt.show()#呈现图表
结果如下:
在绘制图像的时候会经常遇到图像上的中文显示不出来的问题,解决方法也很简单,只要在第三行写入plt.rcParams['font.sans-serif'] = ['SimHei']就行了
其中SimHei是黑体的意思,如果想设置别的字体,直接将其替换就行了
宋体:SimSu 黑体:SimHei 微软雅黑:Microsoft YaHei 微软正黑体:Microsoft JhengHei
新宋体:NSimSun 新细明体:PMingLiU 细明体:MingLiU 标楷体:DFKai-SB
仿宋:FangSong 楷体:KaiTi 隶书:LiSu 幼圆:YouYuan 华文细黑:STXihei
华文楷体:STKaiti 华文宋体:STSong 华文中宋:STZhongsong 华文仿宋:STFangsong
方正舒体:FZShuTi 方正姚体:FZYaoti 华文彩云:STCaiyun华文琥珀:STHupo
华文隶书:STLiti 华文行楷:STXingkai 华文新魏:STXinwei
上面的代码我们用yticks设置了y轴上每个点的名称
需要我们在函数yticks里输入两个前后对应的列表用逗号隔开,前者存放每个需要标记的点的值,后者存放每个点的标记,其中用两个$符号标记起来的字会变成好看的斜体,里面的内容满足latex语法空格前得加上\
如果有多条曲线图,我们可以在图上显示图例,方便图线的认读
plt.legend()
在plt.plot()后的括号中加入lebel参数然后写上相应的图例
然后在plt.show()之前加上这行代码就可以显示图例了
示例如下
x=np.linspace(-4,4,100)
y1=np.sin(x)
y2=-x
plt.figure()
plt.plot(x,y1,label="sin(x)",linestyle="--")#确定当前图表的横纵坐标等参数
plt.plot(x,y2,label="-x")#确定当前图表的横纵坐标等参数
plt.xlim(-4,4)
plt.ylim(-1.5,1.5)
plt.legend()#显示图例
plt.show()
结果如下
在legend()后面设置参数loc就可以设置图例的位置了。
plt.legend(loc="upper left")
plt.legend(loc="lower right")