文章目录
- 0. 介绍
- 1. 使用函数绘制matplotlib的图表组成元素
- 1.1 绘制matplotlib图表组成元素的主要函数
- 1.2 数据准备
- 1.3 绘制`matplotlib`图表组成元素的函数
- 1.3.1 函数`plot()`——展示变量的趋势变化
- 1.3.2 函数`scatter()`——寻找变量之间关系
- 1.3.3 函数`xlim()`——设置x轴的数值显示范围
- 1.3.4 函数xlabel()——设置x轴的标签文本(y轴同)
- 1.3.5 函数grid()——绘制刻度线网格线
- 1.3.6 函数axhline()——绘制平行于x轴的水平参考线
- 1.3.7 函数axvspan()——绘制垂直于x轴的参考区域
- 1.3.8 函数annotate()——添加图形内容细节的指向型注释文本
- 1.3.9 函数text()——添加图形内容细节的无指向型注释文本
- 1.3.10 函数title()——添加图形内容标题
- 1.3.11 函数legend()——标识不同图形的文本标签图例
- 2. 多函数组合
0. 介绍
matplotlib
库是Python中绘制二维、三维图表的数据可视化工具。有如下特点:
- 简单语句实现复杂绘图
- 交互式操作实现渐趋精细的图形效果
- 使用嵌入式的`LaTeX输出具有印刷级别的图标、表达式、符号文本
- 对图表元素实现精细化控制
1. 使用函数绘制matplotlib的图表组成元素
1.1 绘制matplotlib图表组成元素的主要函数
在一个图形窗口中,底层是一个Figure
实例(称之为画布),包含一些可见和不可见的元素。画布上的图形就是Axes
实例,Axes
实例几乎涵盖matplotlib
的组成元素。Axes
实例有x轴和y轴属性,即可以使用Axes.xaxis
和Axes.yaxis
来控制x轴和y轴的相关元素,如有:刻度线、刻度标签等。
而通过matplotlib.pyplot
模块的API,就可以实现各种组成元素的绘制。
1.2 数据准备
- 导入第三方包
Numpy
和快速绘图模块pyplot
import matplotlib.pyplot as plt import numpy as np
其中,科学计算包Numpy
是matplotlib
库的基础。
1.3 绘制matplotlib
图表组成元素的函数
1.3.1 函数plot()
——展示变量的趋势变化
- 功能:展现变量的趋势变化
- 调用签名:
plt.plot(x,y,ls="-",lw=2,label="plot figure")
-
参数说明:
- x:x轴上的数值
- y:y轴上的数值
- ls:折线图的的线条风格
- lw:折线图的线条宽度
- label:标记图形内容的标签文本
-
调用展示:
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.cos(x) plt.plot(x,y,ls="-",lw=2,label="plot figure") plt.legend() plt.show()
1.3.2 函数scatter()
——寻找变量之间关系
- 功能:寻找变量之间关系
- 调用签名:
plt.scatter(x,y1,c="b",label="scatter figure")
- 参数说明:
- x:x轴上的数值
- y:y轴上的数值
- c:散点途中标记的颜色
- label:标记图形内容的标签文本
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.random.rand(1000) plt.scatter(x,y,label="plot figure") plt.legend() plt.show()
1.3.3 函数xlim()
——设置x轴的数值显示范围
- 功能:设置x轴的数值显示范围
- 调用签名:
plt.xlim(xmin,xmax)
- 参数说明:
- xmin:x轴上的最小值
- xmax:x轴上的最大值
同样适用于ylim()
。
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.random.rand(1000) plt.scatter(x,y,label="plot figure") plt.legend() plt.xlim(0.05,10) plt.ylim(0,1) plt.show()
1.3.4 函数xlabel()——设置x轴的标签文本(y轴同)
- 功能:设置x轴的标签文本
- 调用签名:
plt.xlabel(string)
- 参数说明:
- string:标签文本内容
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-",lw=2,c="c",label="plot figure") plt.legend() plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show()
1.3.5 函数grid()——绘制刻度线网格线
- 调用签名
plt.grid(linestyle=":",color="r")
- 参数说明:
- linestyle:网格线的线条风格
- color:网格线的线条颜色
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-",lw=2,c="c",label="plot figure") plt.legend() plt.grid(linestyle=":",color="r") plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show()
1.3.6 函数axhline()——绘制平行于x轴的水平参考线
- 调用签名:
plt.axhline(y=0.0,c="r",ls="--",lw=2)
- 参数说明:
- y:水平参考线的出发点
- c:参考线的线条颜色
- ls:参考下的线条风格
- lw:参考线的线条宽度
调用签名和参数同样适用于axvline()
上。
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-",lw=2,c="c",label="plot figure") plt.legend() plt.axhline(y=0.0,c="r",ls="--",lw=2) plt.axvline(x=4.0,c="r",ls="--",lw=2) plt.grid(linestyle=":",color="r") plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show()
1.3.7 函数axvspan()——绘制垂直于x轴的参考区域
- 调用签名:
plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=0.3)
- 参数说明:
- xmin:参考区域的起始位置
- xmax:参考区域的终止位置
- facecolor:参考区域的填充颜色
- alpha:参考区域的填充颜色的透明度
同样适用于axhspace()
上。
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure") plt.legend() plt.axvspan(xmin=4.0,xmax=6.0,facecolor="y",alpha=0.3) plt.axhspan(ymin=0.0,ymax=0.5,facecolor="y",alpha=0.3) plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show()
1.3.8 函数annotate()——添加图形内容细节的指向型注释文本
- 调用签名:
plt.annotate("maximum", xy=(np.pi/2,1.0), xytext=((np.pi/2)+1.0,.8), weight="bold", color="b", arrowprops =dict(arrowstyle="->",connectionstyle="arc3",color="b"))
- 参数说明:
- string:图形内容的注释文本
- xy:被注释图形内容的位置坐标
- xytext:注释文本的位置坐标
- weight:注释文本的字体粗细风格
- color:注释文本的字体
- arrowprops:指示被注释内容的箭头的属性字典
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure") plt.legend() plt.annotate("maximum", xy=(np.pi/2,1.0), xytext=((np.pi/2)+1.0,.8), weight="bold", color="b", arrowprops =dict(arrowstyle="->",connectionstyle="arc3",color="b")) plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show()
1.3.9 函数text()——添加图形内容细节的无指向型注释文本
- 调用签名:
plt.text(x,y,string,weight="bold",color="b")
- 参数说明:
- x:注释文本内容所在位置横坐标
- y:注释文本内容所在位置纵坐标
- string:注释文本内容
- weight:注释文本内容的粗细风格
- color:注释文本内容的字体颜色
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure") plt.legend() plt.text(5.0,0.09,"y=sin(x)",weight="bold",color="b") plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show()
1.3.10 函数title()——添加图形内容标题
- 调用签名:
plt.title(string)
- 参数说明:
- string:图形内容的标题文本
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure") plt.legend() plt.title("y=sin(x)") plt.show()
1.3.11 函数legend()——标识不同图形的文本标签图例
- 调用签名:
plt.legend(loc="lower left")
- 参数说明:
- loc:图例在图中的位置
- 调用展示
import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.sin(x) plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure") plt.legend(loc="lower right") plt.title("y=sin(x)") plt.show()
fdffd
2. 多函数组合
import matplotlib.pyplot as plt
from matplotlib import cm as cm
import numpy as np
# define data
x=np.linspace(0.5,4,100)
y=np.sin(x)
y1=np.random.randn(100)
# scatter figure
plt.scatter(x,y1,c="0.25",label="scatter figure")
# plot figure
plt.plot(x,y,ls="--",lw=2,label="plot figure")
# some clean up(romving chartjunk)
for spine in plt.gca().spines.keys():
if spine=="top" or spine=="right":
plt.gca().spines[spine].set_color("none")
# turn bottom tick for x-axis on
plt.gca().xaxis.set_ticks_position("bottom")
# set tick_line position of bottom
# leave left ticks for y-axis on
plt.gca().yaxis.set_ticks_position("left")
#set tick_line position of left
# set x,yaxis,limit
plt.xlim(0.0,4,0)
plt.ylim(-3.0,3.0)
# set axes labels
plt.ylabel("y_axis")
plt.xlabel("x_axis")
# set x,yaxis grid
plt.grid(True,ls=":",color="r")
# add a horizontal span across the axis
plt.axhline(y=0.0,c="r",ls="--",lw=2)
# add a vertical span across the axis
plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=.3)
# set annotating info
plt.annotate("",xy=(0,-2.78),
xytext=(0.4,-2.32),
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
plt.annotate("",xy=(3.5,-2.98),
xytext=(3.6,-2.70),
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
# set text info
plt.text(3.6,-2.7,"'|' is tickline",weight="bold",color="b")
plt.text(3.6,-2.95,"3.5 is ticklabel",weight="bold",color="b")
# set title
plt.title("structure of matplotlib")
# set legend
plt.legend()
plt.show()