通过图表表达会更更容易让人们理解数据,所以,能够很好的掌握matplotlib会让工作变的更加高效。
一,修改matplotlib的默认参数
对于matplotlib的配置信息是通过配置文件读取的。配置文件提供的几乎所有属性指定的默认值。matplotlib提供了二种修改默认参数的方式,但这种也是很高级的参数了,一般来说,还是用的比较少。
第一种是rcParams参数字典,然后修改字典的内容。
第二种是rc命令,传入关键字元祖来修改配置项。
import matplotlib as mp
mp.rcParams['lines.color'] = 'r'
mp.rc('lines', color='r')
若修改了默认配置之后,后悔了,可以通过rcdefaults()来重置设置。
设置主题的方法
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
二,常用的图表介绍以及基本的matplotlib画图工具(均基于import matplotlib.pyplot as plt)
1)Ipython的语法糖, 可以将图直接从后台调到前台来进行展示,用于cell下直接展示, 不需要show()函数。
%matplotlib inline
2)figure()方法,显式的创建一个图形,表示一个用户图形界面窗口,如果没有指明的话,系统会自己给定一个。
可以通过ax = gca()来得到目前的一个坐标对象。
也可以通过ax = plt.axes()的目前的一个坐标对象。
3)图的坐标,标签,标题等的设置
可以通过axis([a, b, c, d])方法来指定画布的横纵坐标的取值范围==plt.xlim(a, b)/plt.ylim(c, d)
axis('tight')采用紧凑的方式来排布横纵坐标。
axis('equal')采用横轴坐标相等的方式来排布。
不自己设定的时候,系统默认采用采用最小最大值点作为边界,这样可以看到所有的点。
在已有的图中添加一条线或者一个矩形,可以通过下面的方法来得到。
import matplotlib.pyplot as plt
plt.axhline() # 绘制水平线,可以指定y的位置
plt.axvline() # 绘制垂直线,可以指定x的位置
plt.axhspan()
plt.axvspan()
设置x,y轴的标签
plt.xlabel('x')
plt.ylabel('y')
设置图像的标题
plt.title('hello world')
设置图标
plt.plot(x, np.sin(x), '-g', label='sin(x)')
plt.plot(x, np.cos(x), ':b', label='cos(x)')
plt.legend()
通过axes来设置等价
plt.xlabel() --> ax.set_xlabel()
plt.xlim() --> ax.set_xlim()
plt.title() --> ax.set_title()
通过ax来设置刻度
4)plot函数
利用plot()方法得到一个线条的实例,第一种是直接在plot方法中,指定线条的各种属性,第二种也可以通过setp()方法来设置线条实例的属性。
plt.plot(x, y, linewidth=1,5)
line = plt.plot(x, y)
line.set_linewidth(1.5)
setp(line, linewidth=1.5)
setp(line, 'linewidth',1.5)
常用的属性:
apha 透明度,float
label 标签,str, 设置图标
linestyle(ls) 线条风格,-/--/-./:/...等
linewidth(lw) float, 线条宽度
marker 线条标记 如+/./s/*/^/</>/o/D等
markersize 线条标记的大小
markeredgecolor 线条标记边框的颜色
markeredgewidth 线条标记宽度值
markerfacecolor 线条标记填充的颜色
color(c)线条颜色 b/g/r/y/c/k/m/w 或者通过RGB的数组来指定color, 或者通过色表来标记(‘#eeefff’)
ax = plt.axes()
ax.plot(x, y)
ax.set(xlim = (0, 10), ylim =(1, 2), xlabel='x', ylabel='y', title='hello world')
改变坐标的刻度
ax = plt.gca()
ax.locator_params(tight=True, nbins=10) # 10个刻度
ax.xaxis.set_major_locator(matplotlib.ticker.MultipleLocator(10))
5)子图做法
通过ax来是实现
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.5, 0.8, 0.4], xticklabels=[], ylim=(-1.2, 1.2))
ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.4], ylim=(-1.2, 1.2))
ax1.plot(x, y1)
ax2.plot(x, y2)
通过plt.subplot来实现
subplot是图形中的子区,有三个参数,以元祖的方式输入,第一个是行,第二个是列,是三个是子区的标号。
subplot是表示的是构建画布
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10, 10)
plt.subplots_adjust(hspace=0.4, wspace=0.4)
for i in range(1, 7):
plt.subplot(2, 3, i)
plt.plot(np.sin(x*i))
subplots是同时构建多个子图。
6)scatter
scatter是专门画散点图的,与plot相比更加强大,对于plot而言,每个点是通过的设置,而对于scatter是可以单独的控制每个点的属性(颜色,大小,透明度等)。但相比较而言,plot更快,更高效。
主要属性:color, s(sizes大小), alpha,cmap(color map颜色的渐变,Blues/binary/viridis/RdBu/PuOr/rainbow/jet等)
可以通过cb= plt.colorbar()来进行比对说明,可以通过cb.set_label('**')给colorbar加一个名字。
7)histogram 直方图
hist()中的属性:
bins 默认值为10,表示几个直方图的意思。
range bin的范围,当bins为序列的时候,这个参数失效。
normad 进行归一化处理,形成概率密度
histtype 直方图的类型,可选的第一个是barstacked 就是多种数据堆叠的直方图;第二种是step,未填充的直方图;第三种是stepfilled创建默认填充的线性图。
align bin边界之间矩形条的居中设置,默认值为mid, 当然也可能是left, right
color 颜色
orientation 方向,默认为vertical(竖直),可以设置为水平(horizontal)
8)styling 风格
import matplotlib.pyplot as plt
plt.style.use('stylename') # 整体保持一个风格
with plt.style.context('stylename'):
# make a plot # 仅在with的段落中使用这个风格
9) pie 饼图