千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"如何使用matplotlib库实现图形局部数据放大显示"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2026年11月01日如何使用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安全错误 数据库的锁怎样保障安全 伟宏互联网科技 智能科技公司是互联网公司吗 朗新科技与工业互联网 互联网金融与金融科技 丰台科技园 互联网 兼蜜互联网科技 互联网高科技企业 老年人脱离互联网科技的作文 互联网实体化科技化 成都铂石互联网科技做什么的 河南猎农互联网科技有限公司 江阴互联网智能科技产品进口 崇明区互联网教育科技售后服务 本届互联网博览会上的黑科技 广东工业互联网大赛深圳学泰科技 江苏互联网智能科技软件 广州燕处互联网科技有限公司 全球科技与互联网公司市值变化 互联网科技平台产品运营 杭州融税互联网科技有限公司 伟宏互联网科技 A股互联网金融科技公司 南京欣网互联网科技 奇酷互联网络科技公司 互联网巨头投资的硬核科技 互联网公司会议桌创意科技软装饰 恒银科技与互联网金融 湖南诚度互联网科技有限公司 互联网营销推广黑科技 三亚科技创新互联网基地
0