Python之Matplotlib库学习(2)
pyplot的文本显示函数
Matplotlib还有很多向图像中各种位置添加各类文本的方法:
函数 | 描述 |
---|---|
plt.xlabel(xlabel) | 对x轴增加文本标签 |
plt.ylabel(ylabel) | 对y轴增加文本标签 |
plt.title(label, loc=’center’) | 对图形整体增加文本标签 |
plt.text(x, y, s) | 在任意位置增加文本 |
plt.annotate(s, xy, *args, **kwargs) | 在图形中增加带箭头的注解 |
例如:
1 | import matplotlib.pyplot as plt |
matplotlib在任何文本表达式中接受TeX方程表达式. 例如, 要在标题中写入表达式σi=15, 您可以编写由美元符号包围的TeX表达式:plt.title(r'$\sigma_i=15$')
标题字符串前面的r很重要, 它表示该字符串是一个原始字符串, 而不是将反斜杠视为python转义. matplotlib有一个内置的TeX表达式解析器和布局引擎, 并提供自己的数学字体(有关详细信息, 参阅 数学表达式 . 因此, 可以跨平台使用数学文本, 而无需安装TeX. 对于安装了LaTeX和dvipng的用户, 还可以使用LaTeX格式化文本并将输出直接合并到显示图或保存的postscript中(有关详细信息, 参阅 使用LaTeX进行文本渲染 ).
还可以尝试将text函数改为下列代码:plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.1, width=2))
具体使用可以参考 annotate使用文档 . 因为并不常用, 就不展开说明了.
pyplot的子绘图区域
matplotlib.pyplot.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs) [官方文档]
- shape: 两个整数序列, 放置轴的栅格的形状. 第一个序列是行数, 第二个序列是列数.
- loc: 两个整数的序列, 用于在轴网中放置轴的位置. 第一个序列是行号, 第二个条序列是列号.
- rowspan: 当前轴要向右跨的行数.
- colspan: 当前轴要向下跨的列数.
- fig: 用于放置轴的图形.
例如:
1 | plt.subplot2grid((3, 3), (0, 0), colspan=3) #ax1 |
还可以使用GridSpec()实现同样的功能:
matplotlib.gridspec.GridSpec(nrows, ncols, figure=None, left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) [官方文档]
- nrows: 行数
- ncols: 列数
- figure: 图形
- left, btton, right, top: 子图的范围, 作为图形宽度或高度的一部分. 左边不能大于右边, 底部不能大于顶部.
- wspace, hspace: 子图之间间隔的宽度和高度.
1 | import matplotlib.gridspec as gridspec |
pyplot基础图表概述
pyplot的基础图表函数
函数 | 描述 |
---|---|
plt.plot(x, y, fmt, …) | 绘制一个坐标图 |
plt.boxplot(data, notch, position)) | 绘制一个箱形图 |
plt.bar(left, height, width, bottom) | 绘制一个条形图 |
plt.barh(width, bottom, left, height) | 绘制一个横向条形图 |
plt.polar(theta, r) | 绘制极坐标图 |
plt.pie(data, explode) | 绘制饼图 |
plt.psd(x, NFFT=256, pad_to, Fs) | 绘制功率谱密度图 |
plt.specgram(x, NFFT=256, pad_to, F) | 绘制谱图 |
plt.cohere(x, y, NFFT=256, Fs) | 绘制X‐Y的相关性函数 |
plt.scatter(x, y) | 绘制散点图, 其中, x和y长度相同 |
plt.step(x, y, where) | 绘制步阶图 |
plt.hist(x, bins, normed) | 绘制直方图 |
plt.contour(X, Y, Z, N) | 绘制等值图 |
plt.vlines() | 绘制垂直图 |
plt.stem(x, y, linefmt, markerfmt) | 绘制柴火图 |
plt.plot_date() | 绘制数据日期 |
pyplot饼图的绘制
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, data=None) [官方文档]
- x: 数据数组.
- explode: 对应数据数组x的每个数据突出比例.
- labels: 数据数组对应的标签数组.
- colors: 数据数组对应的颜色数组.
- autopct: 中间显示百分数的方式.
- pctdistance: 每个饼块的中心与由autopct生成的文本的起始点之间的比率. 如果autopct为None, 则忽略.
- shadow: 是否有阴影.
- labeldistance :饼块和对于标签之间的距离比率.
- startangle: 将饼图的起点从x轴逆时针按给定的角度旋转.
- radius: 饼图的半径.
- counterclock: 指定分数方向, 顺时针或逆时针.
- wedgeprops: 传递各项饼图形状数据, 如 wedgeprops={* ‘linewidth’: 3} 设定边框线宽为3.
- textprops: 传递文本参数的数据.
- center: 指定图标的中心位置.
- frame: 是否使用坐标轴框架.
- rotatelabels: 标签是否旋转到对应饼块的角度.
例如:
1 | import matplotlib.pyplot as plt |
另外, 再加一行代码plt.axis('equal')
即可设定饼图等边平面摆放.
pyplot直方图的绘制
matplotlib.pyplot.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype=’bar’, align=’mid’, orientation=’vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs) [官方文档]
- x: 数据数组.*
- bins: 直方图的个数.*
- range: 直方图的上下限.*
- density: 如果为真, 返回元组的第一个元素*将是归一化后形成概率密度的计数.
- weights: 给定数据数组的权重.*
- cumulative: 如果为True, 则在直方图的每个*直方给出该直方中的计数加上所有直方中最小的值的和.
- bottom: 每个直方的基线位置.*
- histtype: {‘bar’, ‘barstacked’, ‘step’, *’stepfilled’}, 要绘制的直方图类型.
- ‘bar’是一种传统的条形直方图. 如果给定多*个数据, 则条形图并排排列.
- ‘barstacked’是一种条形柱状图, 其中多个数*据堆叠在一起.
- ‘step’生成一个默认未填充的lineplot.*
- ‘stepfilled’生成一个默认填充的lineplot.*
- align: {‘left’, ‘mid’, ‘right’} 控制直方*图的绘制方式.
- ‘left’:栏位居中于左侧直方边缘.*
- ‘mid’:栏位位于直方边的中间.*
- ‘right’:栏位位于右侧直方边缘.*
- orientation: {‘horizontal’, ‘vertical’},* 水平或垂直直方图.
- rwidth: 直方宽度.*
- log: 是否使用对数.*
- color: 颜色规格或颜色序列.*
- label: 字符串或字符串序列, 以匹配多个数*据集.
- stacked: 如果为真, 则多个数据堆叠在一起.*
例如:
1 | import matplotlib.pyplot as plt |
pyplot极坐标图的绘制
plt.polar(theta, r, **kwargs) [官方文档]
- theta: 极坐标方向数据
- r: 极坐标半径数据
例如:
1 | import matplotlib.pyplot as plt |
pyplot散点图的绘制
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs) [官方文档]
- x, y: 散点的位置数据.
- s: 点的大小.
- c: 点的颜色.
- maker: 标记风格规范[官方文档].
- cmap: 颜色规范[官方文档].
- norm: 亮度规范[官方文档].
- vmin, vmax: 最大最小亮度.
- alpha: 点的透明度, 介于0(透明)-1(不透明).
- linewidths: 标记边缘的线宽.
- edgecolors: 标记边缘的颜色.
例如:
1 | import matplotlib.pyplot as plt |