matplotlib局部放大
在数据可视化中,很多时候需要对某一区间的数据进行局部放大,以获得对比度更高的可视化效果。下面利用Python语言的Matplotlib库实现一个简单的局部放大图效果。
依赖:matplotlib和numpy
导入依赖库
import numpy as np |
准备数据
x = np.linspace(-0.1*np.pi, 2*np.pi, 30) |
绘图
fig, ax = plt.subplots(1, 1, figsize=(6, 4)) |
嵌入绘制局部放大图的坐标系
axins = inset_axes(ax, width="40%", height="30%", loc='lower left', |
参数说明
- ax:父坐标系
- width, height:子坐标系的宽度和高度(百分比形式或者浮点数个数)
- loc:子坐标系的位置
- bbox_to_anchor:边界框,四元数组(x0, y0, width, height)
- bbox_transform:从父坐标系到子坐标系的几何映射
- axins:子坐标系
固定坐标系的宽度和高度以及边界框,分别设置loc为左上、左下、右上(默认)、右下和中间
在本例子中,将子坐标系嵌入到合适的位置:
axins = inset_axes(ax, width="40%", height="30%", loc='lower left', |
另外有一种更加简洁的子坐标系嵌入方法:
axins = ax.inset_axes((0.2, 0.2, 0.4, 0.3)) |
ax为父坐标系,后面四个参数同样是(x0, y0, width, height),上述代码的含义是:以父坐标系中的x0=0.2x,y0=0.2y为左下角起点,嵌入一个宽度为0.4x,高度为0.3y的子坐标系,其中x和y分别为父坐标系的坐标轴范围。
在子坐标系中绘制原始数据
axins.plot(x, y_1, color='k', linestyle=':', linewidth=1, |
设置放大区间,调整子坐标系的显示范围
# 设置放大区间 |
建立父坐标系和子坐标系的连接线
# loc1 loc2: 坐标系的四个角 |
loc1和loc2分别为父坐标系和子坐标系的四个角,取值为1,2,3,4,对应的四个角分别为:右上,左上,左下,右下。以loc1=3, loc2=1为例,实现的功能为:父坐标系的左下角和子坐标系的左下角相连,父坐标系的右上角和子坐标系的右上角相连。
以上就是利用Matplotlib实现局部放大图画法的例子,关键之处在于bbox_to_anchor参数的设定,利用这个参数可以实现任意位置的坐标系嵌入。
完整的代码如下:
# -*- coding: utf-8 -*- |
最常用:
fig = plt.figure(0) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 JrunDing!
评论