Matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

Matplotlib库的效果 http://matplotlib.org/gallery.html

为什么要学习matplotlib?
1.能将数据进行可视化,更直观的呈现
2.使数据更加客观、更具说服力

1️⃣ Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。
2️⃣matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。
3️⃣pyplot中的每一个函数都会对画布图像作出相应的改变,如创建画布、在画布中创建一个绘图区、在绘图区上画几条线、给图像添加文字说明等。matplotlib.pyplot中常见函数包含有plt.figure、plt.subplot以及plt.axes。
🔹Matplotlib库的使用
import matplotlib.pyplot as plt
plt.plot([2,1,3,5,4])
plt.show()

但是目前存在以下几个问题:
1.设置图片大小(想要一个高清大图)
2.保存到本地
3.描述信息,比如x轴和y轴表示什么,这个图表示什么
4.调整x或者y的刻度的间距
5.线条的样式(比如颜色,形状等)
6.标记出特殊的点(比如告诉别人最高点和最低点在哪里)
plt.figure()
使用plt.figure()函数创建一个全局绘图区域,其中可包含如下参数:
figsize:设置图像的宽度和高度,单位为英寸
facecolor:设置图像背景颜色
dpi:设置绘图对象的分辨率
edgecolor:设置图像边框颜色


plt.xticks() /plt.yticks() 设置当前X轴/Y轴刻度位置的值


plt.subplot(nrows, ncols, plot_number)
subplot用于在全局绘图区域中创建自绘图区域,其中可包含如下参数:
nrows:subplot的行数
ncols:subplot的列数
plot_number:子图的位置
◾使用subplot可以规划figure划分为n个子图,但每条subplot命令只会创建一个子图 。
◾在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域。
🔹plt.subplot(nrows, ncols, plot_number)


plt.axes()
◾plt.axes(rect,facecolor=’w’)创建一个坐标系风格的子绘图区域。
◾ 默认创建一个subplot(111) 坐标系,参数rect=[left,bottom,width,height]中4个变量的范围都是[0,1],表示坐标系与全局绘图区域的关系。代码如下:
import matplotlib.pyplot as plt
plt.axes([0.1,0.1,0.7,0.3], facecolor='y')
plt.show()
🔹plt.axes()



在matplotlib.pyplot 库中有plt子库,该子库提供了7个用于读取和显示的函数, 17个用于绘制基础图表的函数,3个区域填充函数,9个坐标轴设置函数以及11个标签与文本设置函数
plt.plot(x, y, format_string, **kwargs)
x: X轴数据,列表或数组,可选。
y: Y轴数据,列表或数组。
format_string: 控制曲线的格式字符串,可选。
**kwargs: 第二组或更多(x, y, format_string)
当绘制多条曲线时,各条曲线的x不能省略。

format_string: 控制曲线的格式字符串,可选。
由颜色字符、风格字符和标记字符组成






**kwargs: 第二组或更多(x, y, format_string)color: 控制颜色,color = ‘green’
linestyle: 线条风格,linestyle =‘--’或 ‘dashed’
linewidth: 线条宽度,linewidth = 3
marker: 标记风格,marker = ‘o’
markerfacecolor: 标记颜色,markerfacecolor = ‘blue’
markersize: 标记尺寸,markersize = 20


fontsize:设置字体大小
fontproperties:设置字体格式
fontweight:设置字体粗细 (‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’)
fontstyle:设置字体类型(‘normal’, ‘italic’ , ‘oblique’)
rotation:旋转角度 vertical, horizontal或数字
backgroundcolor:标题背景颜色


import matplotlib.pyplot as pltfig = plt.figure(figsize = (8,6), dpi = 50)x = range(0,10,2)
y = [2,1,3,5,4]plt.plot(x,y,color = 'g', linestyle = '-.',linewidth = 3,marker = 'h', markerfacecolor = 'c', markersize = 15)plt.xticks(x)
plt.yticks(range(min(y),max(y)+1))plt.title('示例', fontproperties = 'Kaiti', fontsize = 25, backgroundcolor = 'c')plt.show()

fontsize:设置字体大小
fontproperties:设置字体格式
rotation:旋转角度 vertical, horizontal或数字
backgroundcolor:背景颜色
import matplotlib.pyplot as pltfig = plt.figure(figsize = (8,6), dpi = 50)x = range(0,10,2)
y = [2,1,3,5,4]plt.plot(x,y,color = 'g', linestyle = '-.',linewidth = 3,marker = 'h', markerfacecolor = 'c', markersize = 15)plt.xticks(x)
plt.yticks(range(min(y),max(y)+1))plt.title('示例', fontproperties = 'Kaiti', fontsize = 25)
plt.xlabel('X轴', fontproperties = 'Kaiti', fontsize = 20)
plt.ylabel('Y轴', fontproperties = 'Kaiti', fontsize = 20)
plt.show()






pyplot并不默认支持中文显示,需要rcParams修改字体实现。


rcParams的属性



在有中文输出的地方,增加一个属性:fontproperties


文本显示函数



plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)



plt.subplot2grid()
plt.subplot2grid(GridSpec, CurSpec, colspan = 1, rowspan = 1)
理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。
plt.subplot2grid((3,3),(1,0),colspan=2)







