matplotlib基础
import numpy as np
import matplotlib.pyplot as plt
例1:绘制基本曲线
x = np.arange(0., 10, 0.2) #arange函数用于创建等差数组,与range函数非常类似,两者的区别仅仅是arange返回的是一个array()数据,而range返回的是list。
# print(x)
y1 = np.cos(x) #余弦,直角三角形中锐角的邻边与斜边的比值
y2 = np.sin(x) #正弦,直角三角形中锐角的对边与斜边的比值
y3 = np.sqrt(x) #平方根
# print(plt.rcParams) #matplotlib配置文件信息
plt.rcParams['figure.figsize'] = (12, 8) #rcParams修改配置文件中的图片尺寸
plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-.', marker='.', label=r'$y=cos{x}$')
plt.plot(x, y2, color='green', linewidth=2.5, linestyle='--', marker='*', label=r'$y=sin{x}$')
plt.plot(x, y3, color='m', linewidth=3.5, linestyle=':', marker='x', label=r'$y=sqrt{x}$')
plt.legend(loc='best') #图例,区分图中包含的多种曲线或不同分类的数据,需先在plot中使用label参数才能显示
# 不使用参数 label, 直接使用如下命令生成图例
plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-.', marker='.')
plt.plot(x, y2, color='green', linewidth=2.5, linestyle='--', marker='*')
plt.plot(x, y3, color='m', linewidth=3.5, linestyle='-', marker='x')
plt.legend(['cos(x)', 'sin(x)', 'sqrt(x)'], loc='upper right')
例2:spines设置坐标轴
ax = plt.subplot(111) #设置一个空图
#隐藏顶部及右侧边框
ax.spines['right'].set_color('none') #set_color设置右边轴线为透明色
ax.spines['top'].set_color('none')
#设置坐标轴刻度及位置
ax.xaxis.set_ticks_position('bottom') #设置水平轴上的坐标轴刻度
ax.spines['bottom'].set_position(('data', 0.0)) #set_position设置轴位置:'center' -> ('axes',0.5);'zero' -> ('data', 0.0)
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0.0))
例3:xlim方法设置坐标轴刻度取值范围
x = np.arange(0., 10, 0.2)
# print(x)
plt.xlim(x.min()*1.1, x.max()*1.1) #x.min()*1.1=0, x.max()*1.1=10.78
plt.ylim(-1.5, 4.0)
例4:xticks、yticks方法设置x、y轴的刻度标签值,接例3
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决汉字显示乱码问题
plt.xticks([0, 2, 4, 6, 8, 10], [r'零', r'two', r'four', r'six', r'8', r'10'])
plt.yticks([-1, 0, 1, 2, 3, 4], [r'-1.0', r'0.0', r'1.0', r'2.0', r'3.0', r'4.0'])
例5:title方法设置标题,xlabel、ylabel方法设置坐标轴描述,接例4
plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$', fontsize=19) #'\'号两侧必须各有一个空格字符,否则无法解析,fontsize参数设置字体大小
plt.xlabel(r'$the \ input \ value \ of \ x$', fontsize=18, labelpad=18.8) #labelpad参数设置描述距离轴远近
plt.ylabel(r'$y=f(x)$', fontsize=18, labelpad=12)
例6:text方法设置文字描述和注解,接例5
plt.text(5, 2.9, r'$x \in [0.0, 10.0]$', color='k', fontsize=10)
plt.text(5, 0.8,r'$y \in [-1.0, 4.0]$', color='k', fontsize=10)
例7:annotate方法对某个点加注解,接例6
plt.scatter([8, ], [np.sqrt(8), ], 50, color='m') #使用散点图放大当前点
plt.annotate(r'$2\sqrt{2}$', xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color='#090909', arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='#090909')) #xy参数设置'被注解点'的坐标,xytext参数设置'注解文字'的位置,arrowprops参数设置注解文字与被注解点的连接方式
例8:曲线图
x = np.arange(-5, 5, 0.1)
y = x**2
plt.plot(x, y)
plt.grid(True) #网格线开关
例9:灰度图(直方图)
x = np.random.normal(size=1000) #正态分布
plt.hist(x, bins=10) #bins参数设置分桶数目
例10:散点图
plt.rcParams['figure.figsize'] = (8, 8)
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
plt.scatter(x, y)
例11:箱式图
x = np.arange(-5, 5, 0.1)
plt.boxplot(x)
例12:饼状图
sort = ['Foxes', 'Cats', 'Dogs', 'Pigs']
sizes = [13, 30, 30, 37]
color = ['m', 'b', 'g', 'r']
explode = (0, 0.1, 0, 0) #分离第2类,数值表示分离远近
plt.pie(sizes, explode=explode, labels=sort, colors=color, autopct='%1.1f%%', shadow=True)