Matplotlib入门教程
1.文章概述
matplotlib库是Python中绘制二维、三维图表的数据可视化工具,主要特点有
- 使用简单的绘图语句实现复杂的绘图效果
- 以交互式操作实现逐渐精细的图形效果
- 使用嵌入式的LaTex输出具有印刷级别的图表、科学表达式和符号文本
- 对图表的组成元素实现精细化控制
因为它具有丰富的绘图类型、通过简单的几行代码,便可以画出精美的图形,和种种便利,因此一直被用于python数据分析中,
2.简单示例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
x = np.arange(10)
y = np.random.rand(10)
plt.plot(x,y,color='r')
plt.show()
结果展示
但往往我们在绘图时的图形往往不是这样简单的。
3.图表的组成元素
基本图表函数
函数 | 作用 |
---|---|
plot() | 展示变量的趋势变化 |
grid() | 绘制刻度线的网格线 |
title() | 添加图形内容的标题 |
xlim() | 设置x轴的数值显示范围 |
ylim() | 设置y轴的数值显示范围 |
xlabel() | 设置x轴的标签文本 |
ylabel() | 设置y轴的标签文本 |
axhline | 绘制平行于x轴的水平参考线 |
axvline | 绘制平行于y轴的水平参考线 |
legend() | 标示不同图形的文本标签图例 |
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
x1 = np.linspace(0.05,10,1000)
y1 = np.cos(x1)
// x1,y1轴上的数值,ls 图的线条分割
// lw 折线图的线条宽度, label 标记图形的标签文本
plt.plot(x1,y1,ls="-",c='y',lw=2,label="plot figure")
// grid()绘制刻度线的网格线
// linstyle()网格线的线条风格 color()网格线的线条颜色
plt.grid(linestyle=":",color="k")
//添加图形内容的标题
plt.title("我是标题设置",fontsize=18)
// xlim(xmin,xmax) x轴的数值显示范围
// xmin:x轴的最小值 xmax:x轴的最大值
// ylim(xmin,xmax)同理
plt.xlim([0,10])
plt.ylim([-1.25,1.25])
// xlabel(string)
// string:标签文本内容,fontsize:设置字体大小
// ylabel()同理
plt.xlabel("X-轴",fontsize=15)
plt.ylabel("Y-轴",fontsize=15)
//绘制 x,y 轴的水平参考线
// x,y 水平参考线的出发点, c参考线的线条颜色, ls线条风格, lw线条宽度
plt.axhline(y=-0.5,c='r',ls='--',lw=2) # x轴
plt.axvline(x=2.0,c='r',ls='--',lw=2) # y轴
// loc:图例在图中的地理位置,取值可查看帮助
plt.legend(loc="best")
结果展示
axvspan()函数
axvspan()函数---绘制垂直于x轴的参考区域, 根据平移性, y轴同理axhspan()
xmin参考区域的起始位置(左侧)
xmax终止位置(右侧)
facecolor参考区域的填充颜色
alpha 填充区域颜色透明度
// x,y轴上的数值
// ls 图的线条分割
// lw 折线图的线条宽度, label 标记图形的标签文本
plt.plot(x1,y1,ls="-",c='y',lw=2,label="plot figure")
//绘制刻度线的网格线
// linstyle()网格线的线条风格 color()网格线的线条颜色
plt.grid(linestyle=":",color="k")
plt.title("我是标题设置",fontsize=18)
plt.xlim([0,10])
plt.ylim([-1.25,1.25])
plt.xlabel("X-轴",fontsize=15)
plt.ylabel("Y-轴",fontsize=15)
plt.axvspan(xmin=4.0,xmax=5.0,facecolor="g",alpha=0.3)
plt.axhspan(ymin=0.0,ymax=0.25,facecolor="r",alpha=0.3)
plt.legend(loc="best")
annotate()函数
annotate() 添加图形内容细节的指向型注释文本
string: 图形内容的注释文本
xy: 被注释文本的位置坐标
xytext: 注释文本的位置坐标
weight: 注释文本的字体粗细风格
color: 注释文本的字体颜色
arrowprops: 指示被注释内容的箭头的属性字典
// x,y轴上的数值
// ls 图的线条分割
// lw 折线图的线条宽度, label 标记图形的标签文本
plt.plot(x1,y1,ls="-",c='y',lw=2,label="plot figure")
//绘制刻度线的网格线
// linstyle()网格线的线条风格 color()网格线的线条颜色
plt.grid(linestyle=":",color="k")
plt.title("我是标题设置",fontsize=18)
plt.xlim([0,10])
plt.ylim([-1.25,1.25])
plt.xlabel("X-轴",fontsize=15)
plt.ylabel("Y-轴",fontsize=15)
plt.annotate("最大值",
xy=(6,1.0),
xytext = (2.2,.6),
weight="bold",
color="g",
fontsize=18,
arrowprops=
dict(arrowstyle="->",connectionstyle="arc3",color="r")
)
plt.legend(loc="best")
text()函数
函数text()--- 添加图形内容细节的无指向型注释文本
plt.text(x,y,string,weight-"bold",color="b")
x: 注释文本所在的横坐标
y: 纵坐标
string: 注释文本内容
weight: 文本内容的粗细风格
color: 文本内容的字体颜色
// x,y轴上的数值
// ls 图的线条分割
// lw 折线图的线条宽度, label 标记图形的标签文本
plt.plot(x1,y1,ls="-",c='y',lw=2,label="plot figure")
//绘制刻度线的网格线
// linstyle()网格线的线条风格 color()网格线的线条颜色
plt.grid(linestyle=":",color="k")
plt.title("我是标题设置",fontsize=18)
plt.xlim([0,10])
plt.ylim([-1.25,1.25])
plt.xlabel("X-轴",fontsize=15)
plt.ylabel("Y-轴",fontsize=15)
plt.text(3.0,0.09,"y=cos(x)",weight="bold",color="b",fontsize=16)
plt.legend(loc="best")
4.subplot()–创建画板
-
子区函数调用签名
- subplot(numRows,nuCols,plotNum),即subplot(CRN)
- C标示行
- R表示列
- N子区位置
简单绘图区域:
plt.figure(figsize=(12,8))
plt.subplot(221)
b_x = [1,2,3,4,5,6,7,8]
b_y = [3,1,4,5,8,9,7,2]
plt.barh(b_x,b_y,align="center",color="c",tick_label=["q","a","c","e","r","j","b","p",],hatch="/")
plt.xlabel("箱子编号")
plt.ylabel("箱子重量(kg)")
plt.subplot(222)
a = np.random.randn(100)
b = np.random.randn(100)
plt.scatter(a,b,s=np.power(10*a+20*b,2),
c=np.random.randn(100),
cmap=mpl.cm.RdYlBu,
marker="o")
plt.subplot(223)
plt.subplot(224)
plt.show()
复杂绘图区域
-
subplot2grid()函数
- subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
- 设置网格,选中网格,确定选中行列区域数量,编号从0开始
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
a = np.arange(0.0,5.0,0.02)
plt.figure(figsize=(12,8))
plt.subplot2grid((3,3),(0,0),colspan=3)
plt.plot(a,f(a))
plt.subplot2grid((3,3),(1,0),colspan=2)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.subplot2grid((3,3),(1,2),colspan=2)
plt.subplot2grid((3,3),(2,0))
plt.subplot2grid((3,3),(2,1))
下一篇:Matlotlib常用图表绘图实例教程及参数说明(二)