part2 Matplotlib介绍

1.什么是matplotlib库

用途广泛,适用性强;面向对象的语法增加了学习成本;对于复杂图像的绘制,相比于R中的ggplot2存在一些差距,即不适合多规则数据、多图层属性。

2.绘图要素

2.1基本图形元素名称:画布(figure)、坐标图形(axes)、轴(axis)

和艺术对象(aritist)、图名(title)、刻度(tick)、刻度标签(tick label)、轴标签(axis label)、轴脊(spine)、图例(legend)、网格(grid)、线(line)和数据标记(marker)

2.2 图形元素举例

  1. 画布 (figure):其包含多个图形元素。它既可以代表图形本身进行图的绘制,又可以被划分为多个子区域。用户可以在画布中设置画布大小(figsize)、分辨率(dpi)和背景颜色等其他参数。
  2. 坐标图形 (axes):其称为子图。主要为绘图数据提供展示区域。在大多数情况下,一个画布对象中包含一个子图区域,子图区域由上、下、左、右 4 个轴脊以及其他构成子图的组成元素组成。
  3. 轴 (axis) :数据轴对象,即坐标轴线。包含位置(locator)对象和格式(formatter)对象,分别用于控制坐标轴刻度的位置和格式。

2.3图层顺序

通过设置每个绘图函数中的zorder参数来设定不同的图层,实现多个图层叠加。

2.4轴比例和刻度

  1. 轴比例。其规定了数值与给定轴之间的映射方式,默认轴比例方式为线性(linear)方式,其他诸如 log、logit、symlog 和自定义函数比例(function scale)方式。当我们采用不同的轴比例方式时,刻度位置和刻度格式也会相应产生变动。
  2. 刻度位置和刻度格式。其规定了每个轴对象上刻度的位置与格式。

2.5坐标系

常见的坐标系有直角坐标系、极坐标系和地理坐标系。

  1. 直角坐标系:经常使用的坐标系,包括二维、三维。

  2. 极坐标系:要求数据完整且具有周期性的变化。

  3. 地理坐标系:Matplotlib 地理坐标系中的地理投影方式较少,仅有 Aitoff 投影、Hammer 投影、Lambert投影和 Mollweide 投影 4 种,因而不适合绘制地理图表,我们可使用 Python 的第三方库(如 cartopy、ProPlot 等库)绘制地理图表。

3.多子图绘制方法

  1. subplot() 函数:可以对当前画布对象添加单个子图,且每次添加子图都会规定其位置顺序
plt.figure(figsize=(6,3),dpi=100,facecolor="w")
ax1 = plt.subplot(212)#两行一列第二行
ax1.text(0.5, 0.5, "subplot(212)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
ax2 = plt.subplot(221)#两行两列第一个
ax2.text(0.5, 0.5, "subplot(221)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
ax3 = plt.subplot(222)#两行两列第二个
ax3.text(0.5, 0.5, "subplot(222)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
  1. add_subplot() 函数:使用方法和 subplot() 函数类似,不同之处是,add_subplot() 函数先产生 figure 对象,然后对该对象依次添加子图

  2. subplots() 函数

subplots(nrows, ncols, sharex, sharey)

该函数的第 1 个参数 nrows 表示绘制子图的行数,第 2 个参数 ncols 表示绘制子图的列数,行数与列数的乘积即绘制的总子图数,第 3 个参数 sharex 可以用来设定是否共享 X 轴,第 4个参数 sharey 可以用来设定是否共享 Y 轴。该函数会返回一个坐标数组对象,该对象用于每个子图的单独绘制。

fig, axs = plt.subplots(2, 3,figsize=(6,4),dpi=100,sharex=True, sharey=True)
axs[0,0].text(0.5, 0.5, "subplots(0,0)", alpha=0.75, ha="center", va="center", weight="bold", size=12)#axs[0,0]表明图像位置
axs[0,1].text(0.5, 0.5, "subplots(0,1)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
axs[0,2].text(0.5, 0.5, "subplots(0,2)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
axs[1,0].text(0.5, 0.5, "subplots(1,0)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
axs[1,1].text(0.5, 0.5, "subplots(1,1)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
axs[1,2].text(0.5, 0.5, "subplots(1,2)", alpha=0.75, ha="center", va="center", weight="bold", size=12)
  1. axes()函数:主要功能是为当前画布 (figure) 对象添加坐标图形 (axes) 对象,使其成为当前的坐标图形(axes)对象。此外,还需要提供 rect 参数(一个四元组:left、 bottom、width、height)。axes() 函数的常见用法包括对当前画布 (figure) 对象中的**坐标图形(axes)**对象添加颜色和大小映射等。
from colormap import parula  #自定义的颜色系,有问题
  1. subplot2grid() 函数:实现对不规则多子图的绘制,即在当前画布对象上绘制网格(grid),网格可用于在特定位置绘制布局和大小不同的子图对象。
subplot2grid(shape, location, rowspan/colspan)

该函数的第 1 个参数shape规定了的网格的行数和列数,第 2 个参数location决定了子图在网格内的行号和列号,第 3 个参数为rowspancolspan,它们分别规定了每个子图向下跨越的行数和向右跨越的列数,也就实现了大小不一的子图的绘制。

  1. gridspec.GridSpec() 函数:用于指定放置子图的网格的几何形状
gridspec.GridSpec(nrows, ncols, figure, left, bottom, right, top)

其中,参数nrows表示网格中的行数;参数ncols表示网格中的列数;left、bottom、right和top是可选参数,用于将子图的范围定义为图形宽度或高度的一部分。

  1. subplot_mosaic()函数:它可利用 mosaic 参数设置特定字符串符号(重复次数、顺序等)来进行子图的视觉布局
fig, axd = plt.subplot_mosaic([['upper left', 'right'],
                               ['lower left', 'right']],
                               figsize=(6,3), constrained_layout=True)
for k in axd:
    annotate_axes(axd[k], f'axd["{k}"]', fontsize=14)      

4.常见绘图函数

  • plot():线图、点图、带连接 线的点图
  • scatter():散点图
  • bar()/barh():柱形图 / 条形图、堆积 柱形图 / 堆积条形图、
  • axhline()/ axvline():垂直于 X/Y 轴的直线
  • axhspan()/ axvspan():垂直于 X/Y 轴的矩形块
  • text():文本
  • fill_between():面积图、填充图
  • pie() x:饼图
  • contour():等高线图
  • step():步阶图
  • stem():茎叶图
  • boxplot():箱线图
  • errorbar():误差线
  • hist():直方图
  • violinplot():“小提琴”图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值