文章目录
- 使用函数绘制图表
- 1.绘制matplotlib图表组成元素的主要函数
- 2.准备数据
- 3.函数用法
- 3.1函数plot()--展现变量的趋势变化
- 3.2函数scatter()--寻找变量之间的关系
- 3.3函数xlim()--设置x轴的数值显示范围
- 3.4函数xlabel()--设置x轴的标签文本
- 3.5 函数grid()--绘制刻度线的网格线
- 3.6 函数axhline()--绘制平行与x轴的水平参考线
- 3.7 函数axvspan()--绘制垂直于x轴的参考区域
- 3.8 函数annotate()--添加图形内容细节的指向型注释文本
- 3.9 函数text()--添加图形内容细节的无指向型注释文本
- 3.10 函数title()--添加图形内容的标题
- 3.11 函数legend()--标识不同图形的文本标签图例
- 函数综合应用
使用函数绘制图表
1.绘制matplotlib图表组成元素的主要函数
在一个图形输出窗口中,底层是一个Figure实例,通常称之为画布,包含一些可见和不可见的元素。在画布上的就是图形,图形是一些Axes实例,里面几乎包含了matplotlib的组成元素,例如坐标轴、刻度、标签、线和标记等。
2.准备数据
我们可以导入第三方包NumPy和快速绘图模块pyplot,matplotlib库就是建立在科学计算包NumPy基础之上的Python绘图库。
代码语言:javascript复制import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.5, 3.5, 100) # 在0.5到3.5之间均匀地取100个数
y = np.sin(x)
y1 = np.random.randn(100) # 在标准正态分布中随机地取100个数
3.函数用法
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='cos(x)')
plt.legend() # 显示图例
plt.show()
3.2函数scatter()–寻找变量之间的关系
函数功能: 寻找变量之间的关系 调用签名: plt.scatter(x, y, 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.randn(1000)
plt.scatter(x, y, c='b', label='scatter plot')
plt.legend()
plt.show()
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.randn(1000)
plt.scatter(x, y, c='b', label='scatter plot')
plt.legend()
plt.xlim(0.05, 10)
plt.ylim(0, 1)
plt.show()
3.4函数xlabel()–设置x轴的标签文本
函数功能: 设置x轴的标签文本 调用签名: plt.xlabel(string) 参数说明:
- xmin: 标签文本的内容
- 平移性: 上面的函数功能,调用签名和参数说明同样可以平移到函数ylabel()上
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='sin(x)')
plt.legend() # 显示图例
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.show()
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, 100)
y = np.log(x)
plt.plot(x, y, ls='-.', lw=2, c='c', label='y=log(x)')
plt.legend()
plt.grid(linestyle=':', color='r')
plt.show()
3.6 函数axhline()–绘制平行与x轴的水平参考线
函数功能: 绘制平行与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, 100)
y = np.sin(x)
plt.plot(x, y, ls='-.', lw=2, c='c', label='sin(x)')
plt.legend()
plt.axhline(y=0.0, c='r', ls='--', lw=2)
plt.axvline(x=4.0, c='r', ls='--', lw=2)
plt.show()
3.7 函数axvspan()–绘制垂直于x轴的参考区域
函数功能: 绘制垂直于x轴的参考区域 调用签名: plt.axvspan(xmin=1.0, xmax=2.0, facecolor=‘y’, alpha=0.3) 参数说明:
- xmin: 参考区域的起始位置
- xmax: 参考区域的终止位置
- facecolor: 参考区域的填充颜色
- alpha: 参考区域的填充颜色的透明度
- 平移性: 上面的函数功能,调用签名和参数说明同样可以平移到函数axhspan()上
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='sin(x)')
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.show()
3.8 函数annotate()–添加图形内容细节的指向型注释文本
函数功能: 添加图形内容细节的指向型注释文本 调用签名: plt.annotate(string,xy=(np.pi/2, 1.0), xytext=((np.pi/2) 0.15, 1.5), 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='sin(x)')
plt.legend()
plt.annotate("maximum",
xy=(np.pi/2, 1.0),
xytext=(np.pi/2 1.0, 0.8),
weight='bold',
color='b',
arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='b'))
plt.show()
3.9 函数text()–添加图形内容细节的无指向型注释文本
函数功能: 添加图形内容细节的无指向型注释文本 调用签名: plt.text(x, y, string, weigth=‘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='sin(x)')
plt.legend() # 显示图例
plt.text(3.10, 0.09, "y=sin(x)", weight="bold", color="b")
plt.show()
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='sin(x)')
plt.legend() # 显示图例
plt.title('sin(x)') # 标题
plt.show()
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='sin(x)')
plt.legend(loc='lower left') # 显示图例
plt.title('sin(x)') # 标题
plt.show()
函数综合应用
代码语言:javascript复制import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm as cm # color map
# define data
x = np.linspace(0.5, 3.5, 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, c='r', label='plot figure')
# some clean up (removing chartjunk)
for spine in plt.gca().spines.keys():
if spine == "top" or spine == "right":
plt.gca().spines[spine].set_color('none')
# turn bottom ticks for x-axis on
plt.gca().xaxis.set_ticks_position('bottom')
# set tick_line position of bottom
# turn 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.xlabel('x_axis')
plt.ylabel('y_axis')
# set x,yaxis grid
plt.grid(True, ls=':', color='r')
# add a horizontal line 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=0.3)
# set annotating info
plt.annotate('maximum', xy=(np.pi / 2, 1.0),
xytext=(np.pi / 2 0.15, 1.5), weight='bold', color='r',
arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r'))
plt.annotate('spines', xy=(0.75, -3),
xytext=(0.35, -2.25), weight='bold', color='b',
arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='b'))
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.70, "'|' 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()