Python的绘图库,将数据图形化,并提供各种多样化的输出格式,可以用来绘制各种静态,动态,交互式的图标。
本文学习内容主要来自:菜鸟教程
一. Pyplot
Matplotlib的子库,是常用的绘图模块,包含一系列绘图函数。
1. plot()函数
绘制二维图形的基本函数,用于画图可以绘制点和线
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
xpoints = np.array([0,1])
ypoints = np.array([0,10])
pl.plot(xpoints,ypoints)
pl.show()
二. 绘图标记
给坐标自定义一些不同的标记,用plot()方法的marker参数定义
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
x = np.arange(0,12,0.1)
y = np.sin(x)
z = np.cos(x)
pl.plot(x,y,x,z,marker = 'o')
pl.show()
具体样式有很多,可以参考绘图标记
2. fmt参数
定义了基本格式:标记,线条样式,颜色等
3. 自定义坐标标记大小和颜色
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
y = np.arange(1,5,1)
pl.plot(y, marker = 'o', ms = '25', mfc = 'r', )
pl.show()
三. 绘图线
上面是自定义点标记格式的,这是自定义线样式的:类型、大小、颜色
1. 类型
使用linestyle(ls)参数定义
2.颜色
使用color(c)参数定义
3. 宽度
使用linewidth(lw)定义,可以是浮点数
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
y1 = np.arange(1,5,1)
pl.plot(y1, marker = 'o', ms = '25', mfc = 'r', color = 'g', linestyle = 'dotted', linewidth = '10' )
pl.show()
一个综合自定义点样式、线条样式的实例。
四. 轴标签和标题
使用xlabel()和ylabel()设置x轴和y轴的标签;使用title()设置标题
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
y1 = np.arange(1,5,1)
pl.plot(y1, marker = 'o', ms = '25', mfc = 'r', color = 'g', linestyle = 'dotted', linewidth = '10' )
pl.ylabel("values")
pl.xlabel("meters")
pl.title("HMOE")
pl.show()
对于字体使用在轴函数或标题函数中的fontproperties参数即可,不过要注意默认不支持中文,需下载相应字体文件或使用系统自带的字体。
至于位置由loc参数设置,默认为‘center’,此外还有‘left’,‘right’;
五. 网格线
使用pylpot中的gird()方法设置图表中的网格线
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
y1 = np.arange(1,5,1)
pl.plot(y1, marker = 'o', ms = '25', mfc = 'r', color = 'g', linestyle = 'dotted', linewidth = '10' )
pl.ylabel("values")
pl.xlabel("meters")
pl.title("HMOE")
pl.grid(color = 'r', linestyle = '--', linewidth = 0.5)
pl.show()
六. 绘制多图
可以使用pyplot中的subplot()和subplots()方法绘制多个子图
1. subplot()
在绘图时需要制定位置
刚开始没咋看懂,看了看代码才懂了,举一些例子来说吧:
subplot(1,2,1):表示整个页面的分成了1*2的图片区域(也就是一行,每行两个图),现在绘制是序列号为1的图形(序列号就是index,从第一行左边开始编号)
subplot(1,2,2):还是一个1*2图片区域,不过现在绘制的是第二个图形
subplot(2,2,3):现在是2*2图片区域,正在绘制第三个图形(也就是第二行第一个图形)
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
# 这里把页面分成2*2;一共四个图形区域,只绘制第一个和第三个图形
pl.subplot(2,2,1) # 表示绘制第一个图形
y1 = np.arange(1,5,1)
pl.plot(y1, marker = 'o', ms = '25', mfc = 'r', color = 'g', linestyle = 'dotted', linewidth = '10' )
pl.ylabel("values")
pl.xlabel("meters")
pl.title("HMOE")
pl.grid(color = 'r', linestyle = '--', linewidth = 0.5)
pl.subplot(2,2,3) # 表示绘制第三个图形
y2 = np.arange(1,10,2)
pl.plot(y1, marker = 'o', ms = '25', mfc = 'r', color = 'g', linestyle = 'dotted', linewidth = '10' )
pl.ylabel("values")
pl.xlabel("meters")
pl.title("CARS")
pl.suptitle("PRCIES") # 整个页面的总标题
pl.show()
2. subplots()
可以一次生成多个图形;
具体实例参考菜鸟教程subplots。
七. 散点图
使用scatter()方法绘制散点图
1.图标大小:
点大小可以自定义设置,如果需要每个点的大小各不相同,将大小定义为一个数组即可,不过数组元素个数要与点个数相对应。
sizes = np.array([15,26,451,451,50])
pl.scatter(x, y, s=sizes)
pl.show()
2.设置颜色
颜色也是同理,需要不同颜色则定义一个颜色数组;
也可以通过颜色条Colormap设置,每种颜色都有一个范围从0到100的值,设置颜色条需要camp参数,如果需要显示颜色条,使用pl.colorbar()方法。
import matplotlib.pyplot as pl
import numpy as np
import matplotlib
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
pl.scatter(x, y, c=colors, cmap='BuPu')
pl.colorbar()
pl.show()
八. 柱形图
使用bar()方法绘制柱形图
使用width参数设置宽度;使用barh()方法绘制水平的柱状图,使用height参数设置宽度
颜色同理可以使用数组绘制不同颜色
九. 饼状图
使用pie()方法绘制饼图(参数太多了,具体查阅饼图)
y = np.array([35, 25, 25, 15])
pl.pie(y,
labels=['A','B','C','D'], # 设置饼图标签
colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
)
pl.title("demo") # 设置标题
pl.show()
饼图的绘制默认从x轴正半轴逆时针开始绘制,可以定义参数startangle参数自定义开始角度;
使用explode参数可以达到突出某个扇区的效果,如下:
explode = (0,0,0.1,0) # 突出第三个扇区,0~1之间,数值越大扇区离中心点越远
pl.pie(y,
labels=['A','B','C','D'], # 设置饼图标签
colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
shadow = True,
explode = explode
)
十. imsave()
将图像数据保存到磁盘上
# 创建一个二维的图像数据
img_data = np.random.random((100, 100))
# 显示图像
pl.imshow(img_data)
# 保存图像到磁盘上
pl.imsave('runoob-test.png', img_data)
十一.imread()
从图像文件中读取图像数据
img = plt.imread('map.jpeg')
# 显示图像
plt.imshow(img)
plt.show()
还有各种对图像的操作:裁剪、变暗、改变颜色等
绘制图像还有一些特殊的,比如直方图,二维的灰度图像等等,以后有需要在深入学习吧!