文章目录
- 首先来介绍饼图
- 接下来我们来绘制等高线图
- plt.contour
- plt.contourf
- 注意
今天来学习一下画饼图和等高线图。
其实和之前我们画图的技巧是一样的,只是画饼图和画等高线图我们又用到了新的两种方法。
饼图:plt.pie()
等高线图:plt.contourf
、plt.contour
首先来介绍饼图
语法:plt.pie(值,间隙,标签,颜色,格式,shadow=是否带阴影,startangel=其实角度)
其实很简单。
代码:
#导入模块
import numpy as np
import matplotlib.pyplot as plt
#准备数据
values = [26, 17, 21, 29, 11]
#准备间距
spaces = [0.05, 0.01, 0.01, 0.01, 0.01]
#准备标签
labels = ['Python', 'JavaScript','C++', 'Java', 'PHP']
#每一个的标签的颜色
colors = ['dodgerblue', 'orangered','limegreen', 'violet', 'gold']
#创建图形窗口
plt.figure('Pie', facecolor='lightgray')
#标题
plt.title('Pie', fontsize=20)
#绘制饼图 shadow绘制阴影部分,startangle 设置起始角度
plt.pie(values, spaces, labels, colors, '%d%%',shadow=True, startangle=90)
#等轴比例
plt.axis('equal')
#保存
plt.savefig("路径")
效果图
接下来我们来绘制等高线图
等高线图分两种,一种是plt.contour
,另一种是plt.contourf
,那么这两种的区别是一个不存在颜色映射,一个可以做颜色映射
语法:plt.contour(x,y,z,阶数,linewidths=线宽)
plt.contourf(x,y,z,阶数,cmp=颜色映射)
plt.contour
代码
#导入模块
from matplotlib import pyplot as plt
import numpy as np
#准备样本
n = 1000
#网格化 x,y都是一个二维矩阵
x,y = np.meshgrid(np.linspace(-3,3,n),np.linspace(-3,3,n))
#准备数据
z =(1 - x/2 + x**5 + y**3)*np.exp(-x**2 - y**2)
#创建图形窗口
plt.figure('Contour',facecolor="lightgray")
#设置标题,x轴信息,y轴信息
plt.title("Contour",fontsize=20)
plt.xlabel("x",fontsize=14)
plt.ylabel("y",fontsize=14)
#紧凑式布局
plt.tight_layout()
#绘制网格线
plt.grid(linestyle=":")
#绘制等高线图
cntr = plt.contour(x,y,z,8,colors='black',linewidths=0.5)
#为等高线图添加高度标签
plt.clabel(cntr,inline_spacing=1,fmt="%.1f",fontsize=10)
#保存
plt.savefig("路径")
效果图
可以看到当前图形仅仅是画出了等高线,并没有做颜色填充来进行区别,如果想用颜色填充的话,需要加上plt.contouf()
函数
plt.contourf
代码
from matplotlib import pyplot as plt
import numpy as np
n = 1000 # 1000个样本
#网格化
x,y = np.meshgrid(np.linspace(-3,3,n),
np.linspace(-3,3,n))
z =(1 - x/2 + x**5 + y**3)*np.exp(-x**2 - y**2)
plt.figure('Contour',facecolor="lightgray")
plt.title("Contour",fontsize=20)
plt.xlabel("x",fontsize=14)
plt.ylabel("y",fontsize=14)
#紧凑式布局
plt.tight_layout()
plt.grid(linestyle=":")
#绘制等高线图
plt.contourf(x,y,z,8,cmap='jet')
cntr = plt.contour(x,y,z,8,colors='black',linewidths=0.5)
#为等高线图添加高度标签
plt.clabel(cntr,inline_spacing=1,fmt="%.1f",fontsize=10)
#保存
plt.savefig("路径")
效果图
效果有明显的差别,不过相较之前的代码,仅仅是加上了一句。
注意
注意:为确保颜色映射正常,在使用contourf
之后,我们又接着使用了plt.contour
来绘制我们的等高线,否则生成的图可能会存在瑕疵,如下图所示
但是如果仅仅想生成等高线图,不需要颜色映射,那么就使用plt.contour
便可以了。