千家信息网

如何使用matplotlib库实现图形局部数据放大显示

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容介绍了"如何使用matplotlib库实现图形局部数据放大显示"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2025年11月07日如何使用matplotlib库实现图形局部数据放大显示

本篇内容介绍了"如何使用matplotlib库实现图形局部数据放大显示"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、绘制总体图形

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.axes_grid1.inset_locator import inset_axesfrom matplotlib.patches import ConnectionPatchimport  pandas as pdMAX_EPISODES = 300x_axis_data = []for l in range(MAX_EPISODES):    x_axis_data.append(l)fig, ax = plt.subplots(1, 1)data1 = pd.read_csv('./result/test_reward.csv')['test_reward'].values.tolist()[:MAX_EPISODES]data2 = pd.read_csv('./result/test_reward_att.csv')['test_reward_att'].values.tolist()[:MAX_EPISODES]ax.plot(data1,label="no att")ax.plot(data2,label = "att")ax.legend()

二、插入局部子坐标系

#插入子坐标系axins = inset_axes(ax, width="40%", height="20%", loc=3,                   bbox_to_anchor=(0.3, 0.1, 2, 2),                   bbox_transform=ax.transAxes)#在子坐标系中放入数据axins.plot(data1)axins.plot(data2)

三、限制局部子坐标系数据范围

#设置放大区间zone_left = 150zone_right = 170# 坐标轴的扩展比例(根据实际数据调整)x_ratio = 0  # x轴显示范围的扩展比例y_ratio = 0.05  # y轴显示范围的扩展比例# X轴的显示范围xlim0 = x_axis_data[zone_left]-(x_axis_data[zone_right]-x_axis_data[zone_left])*x_ratioxlim1 = x_axis_data[zone_right]+(x_axis_data[zone_right]-x_axis_data[zone_left])*x_ratio# Y轴的显示范围y = np.hstack((data1[zone_left:zone_right], data2[zone_left:zone_right]))ylim0 = np.min(y)-(np.max(y)-np.min(y))*y_ratioylim1 = np.max(y)+(np.max(y)-np.min(y))*y_ratio# 调整子坐标系的显示范围axins.set_xlim(xlim0, xlim1)axins.set_ylim(ylim0, ylim1)

(-198439.93763, -134649.56637000002)

四、加上方框和连接线

# 原图中画方框tx0 = xlim0tx1 = xlim1ty0 = ylim0ty1 = ylim1sx = [tx0,tx1,tx1,tx0,tx0]sy = [ty0,ty0,ty1,ty1,ty0]ax.plot(sx,sy,"blue")# 画两条线#第一条线xy = (xlim0,ylim0)xy2 = (xlim0,ylim1)"""xy为主图上坐标,xy2为子坐标系上坐标,axins为子坐标系,ax为主坐标系。"""con = ConnectionPatch(xyA=xy2,xyB=xy,coordsA="data",coordsB="data",        axesA=axins,axesB=ax)axins.add_artist(con)#第二条线xy = (xlim1,ylim0)xy2 = (xlim1,ylim1)con = ConnectionPatch(xyA=xy2,xyB=xy,coordsA="data",coordsB="data",        axesA=axins,axesB=ax)axins.add_artist(con)

五、总体实现代码

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.axes_grid1.inset_locator import inset_axesfrom matplotlib.patches import ConnectionPatchimport  pandas as pdMAX_EPISODES = 300x_axis_data = []for l in range(MAX_EPISODES):    x_axis_data.append(l)fig, ax = plt.subplots(1, 1)data1 = pd.read_csv('./result/test_reward.csv')['test_reward'].values.tolist()[:MAX_EPISODES]data2 = pd.read_csv('./result/test_reward_att.csv')['test_reward_att'].values.tolist()[:MAX_EPISODES]ax.plot(data1,label="no att")ax.plot(data2,label = "att")ax.legend()#插入子坐标系axins = inset_axes(ax, width="20%", height="20%", loc=3,                   bbox_to_anchor=(0.3, 0.1, 2, 2),                   bbox_transform=ax.transAxes)#在子坐标系中放入数据axins.plot(data1)axins.plot(data2)#设置放大区间zone_left = 150zone_right = 170# 坐标轴的扩展比例(根据实际数据调整)x_ratio = 0  # x轴显示范围的扩展比例y_ratio = 0.05  # y轴显示范围的扩展比例# X轴的显示范围xlim0 = x_axis_data[zone_left]-(x_axis_data[zone_right]-x_axis_data[zone_left])*x_ratioxlim1 = x_axis_data[zone_right]+(x_axis_data[zone_right]-x_axis_data[zone_left])*x_ratio# Y轴的显示范围y = np.hstack((data1[zone_left:zone_right], data2[zone_left:zone_right]))ylim0 = np.min(y)-(np.max(y)-np.min(y))*y_ratioylim1 = np.max(y)+(np.max(y)-np.min(y))*y_ratio# 调整子坐标系的显示范围axins.set_xlim(xlim0, xlim1)axins.set_ylim(ylim0, ylim1)# 原图中画方框tx0 = xlim0tx1 = xlim1ty0 = ylim0ty1 = ylim1sx = [tx0,tx1,tx1,tx0,tx0]sy = [ty0,ty0,ty1,ty1,ty0]ax.plot(sx,sy,"blue")# 画两条线# 第一条线xy = (xlim0,ylim0)xy2 = (xlim0,ylim1)"""xy为主图上坐标,xy2为子坐标系上坐标,axins为子坐标系,ax为主坐标系。"""con = ConnectionPatch(xyA=xy2,xyB=xy,coordsA="data",coordsB="data",        axesA=axins,axesB=ax)axins.add_artist(con)# 第二条线xy = (xlim1,ylim0)xy2 = (xlim1,ylim1)con = ConnectionPatch(xyA=xy2,xyB=xy,coordsA="data",coordsB="data",        axesA=axins,axesB=ax)axins.add_artist(con)

"如何使用matplotlib库实现图形局部数据放大显示"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

坐标 坐标系 范围 数据 比例 局部 调整 图形 实际 方框 中放 内容 区间 原图 坐标轴 总体 更多 知识 实用 学有所成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 三级网络技术视频软件那个好 怎样打开系统管理服务器 软件开发企业分包的成本分录 滁州回收服务器价格 铁路职工网络安全反思 软件开发进度计划填好的 中燃公司有软件开发岗位吗 龙之谷手游服务器价格 网络安全系统的规划方案 外网远程服务器 元神手机验证登录的服务器怎么看 受托软件开发费适用税率 串口服务器的工作位置 查看服务器安全组设置 海南省网络技术学院 服务器 诊断卡 网络安全工程师项目经验案例 股票交易软件开发 获嘉县优亿网络技术有限公司 高校网络安全保障体系建设 软件开发okr绩效考评表 数据库单表数据量过大怎么优化 微信和元软件开发怎么删掉 初中网络安全教育反恐怖 甘肃政法网络安全复试 学电脑编程需要学数据库吗 直播电商软件开发中心 北京应用软件开发教程 软件开发服务公司运营方案 体验服服务器怎么弄
0