【matlab】繪圖插入并放大/縮小子圖

參考鏈接

代碼分為兩個:繪圖代碼與magnify.m

繪圖代碼就是普通的繪圖代碼,以下為例

%https://zhuanlan.zhihu.com/p/655767542
clc
clear
close all
x = 0:pi/100:2*pi;
y1 = sin(x);
plot(x,y1,'r-o');
hold on
y2=sin(x)-0.05;
y3=sin(x)+0.05;
xlim([0 2*pi]);
ylim([-1.5 1.5]);
plot(x,y2,'b-v');
plot(x,y3,'m-.');
legend('線型1','線型2','線型3','Location','northeast')

運行該m文件后運行magnify.m(magnify.m與繪圖代碼放在同一文件夾下)
magnify.m

%https://zhuanlan.zhihu.com/p/655767542
function magnify(f1)
warning off
%
%magnify(f1)
%
%  Figure creates a magnification box when under the mouse
%  position when a button is pressed.  Press '+'/'-' while
%  button pressed to increase/decrease magnification. Press
%  '>'/'<' while button pressed to increase/decrease box size.
%  Hold 'Ctrl' while clicking to leave magnification on figure.
%
%  Example:
%     plot(1:100,randn(1,100),(1:300)/3,rand(1,300)), grid on,
%     magnify;% Rick Hindman - 7/29/04if (nargin == 0), f1 = gcf; end;
set(f1, ...'WindowButtonDownFcn',  @ButtonDownCallback, ...'WindowButtonUpFcn', @ButtonUpCallback, ...'WindowButtonMotionFcn', @ButtonMotionCallback, ...'KeyPressFcn', @KeyPressCallback);
return;function ButtonDownCallback(src,eventdata)f1 = src;a1 = get(f1,'CurrentAxes');a2 = copyobj(a1,f1);set(f1, ...'UserData',[f1,a1,a2], ...'Pointer','fullcrosshair', ...'CurrentAxes',a2);set(a2, ...'UserData',[2,0.2], ...  %magnification, frame size'Color',get(a1,'Color'), ...'Box','on');xlabel(''); ylabel(''); zlabel(''); title('');set(get(a2,'Children'), ...'LineWidth', 2);set(a1, ...'Color',get(a1,'Color')*0.95);set(f1, ...'CurrentAxes',a1);ButtonMotionCallback(src);
return;function ButtonUpCallback(src,eventdata)H = get(src,'UserData');f1 = H(1); a1 = H(2); a2 = H(3);set(a1, ...'Color',get(a2,'Color'));set(f1, ...'UserData',[], ...'Pointer','arrow', ...'CurrentAxes',a1);if ~strcmp(get(f1,'SelectionType'),'alt'),delete(a2);end;
return;function ButtonMotionCallback(src,eventdata)H = get(src,'UserData');if ~isempty(H)f1 = H(1); a1 = H(2); a2 = H(3);a2_param = get(a2,'UserData');f_pos = get(f1,'Position');a1_pos = get(a1,'Position');[f_cp, a1_cp] = pointer2d(f1,a1);set(a2,'Position',[(f_cp./f_pos(3:4)) 0 0]+a2_param(2)*a1_pos(3)*[-1 -1 2 2]);a2_pos = get(a2,'Position');set(a2,'XLim',a1_cp(1)+(1/a2_param(1))*(a2_pos(3)/a1_pos(3))*diff(get(a1,'XLim'))*[-0.5 0.5]);set(a2,'YLim',a1_cp(2)+(1/a2_param(1))*(a2_pos(4)/a1_pos(4))*diff(get(a1,'YLim'))*[-0.5 0.5]);end;
return;function KeyPressCallback(src,eventdata)H = get(gcf,'UserData');if ~isempty(H)f1 = H(1); a1 = H(2); a2 = H(3);a2_param = get(a2,'UserData');if (strcmp(get(f1,'CurrentCharacter'),'+') | strcmp(get(f1,'CurrentCharacter'),'='))a2_param(1) = a2_param(1)*1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'-') | strcmp(get(f1,'CurrentCharacter'),'_'))a2_param(1) = a2_param(1)/1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'<') | strcmp(get(f1,'CurrentCharacter'),','))a2_param(2) = a2_param(2)/1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'>') | strcmp(get(f1,'CurrentCharacter'),'.'))a2_param(2) = a2_param(2)*1.2;end;set(a2,'UserData',a2_param);ButtonMotionCallback(src);end;
return;% Included for completeness (usually in own file)
function [fig_pointer_pos, axes_pointer_val] = pointer2d(fig_hndl,axes_hndl)
%
%pointer2d(fig_hndl,axes_hndl)
%
%  Returns the coordinates of the pointer (in pixels)
%  in the desired figure (fig_hndl) and the coordinates
%       in the desired axis (axes coordinates)
%
% Example:
%  figure(1),
%  hold on,
%  for i = 1:1000,
%     [figp,axp]=pointer2d;
%     plot(axp(1),axp(2),'.','EraseMode','none');
%     drawnow;
%  end;
%  hold off% Rick Hindman - 4/18/01if (nargin == 0), fig_hndl = gcf; axes_hndl = gca; end;
if (nargin == 1), axes_hndl = get(fig_hndl,'CurrentAxes'); end;set(fig_hndl,'Units','pixels');pointer_pos = get(0,'PointerLocation');  %pixels {0,0} lower left
fig_pos = get(fig_hndl,'Position');  %pixels {l,b,w,h}fig_pointer_pos = pointer_pos - fig_pos([1,2]);
set(fig_hndl,'CurrentPoint',fig_pointer_pos);if (isempty(axes_hndl)),axes_pointer_val = [];
elseif (nargout == 2),axes_pointer_line = get(axes_hndl,'CurrentPoint');axes_pointer_val = sum(axes_pointer_line)/2;
end

運行后直接在原figure框中右鍵需要放大的地方即可彈出子圖
此時按住郵件不放并按住Ctrl鍵和+鍵/-鍵可放大/縮小子圖
在這里插入圖片描述在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21597.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#關鍵字概覽

C#是一種面向對象的編程語言&#xff0c;由微軟開發并作為.NET框架的一部分。它具有豐富的關鍵字&#xff0c;用于定義程序的結構和行為。本文將詳細介紹C#中的關鍵字&#xff0c;包括基本關鍵字、上下文關鍵字以及它們在C#編程中的使用方式。 訪問修飾符 訪問修飾符控制成員…

Python變量age:深入探索其內涵與運用

Python變量age&#xff1a;深入探索其內涵與運用 在Python的世界里&#xff0c;變量age不僅是一個簡單的標識符&#xff0c;它更是一個承載著豐富信息和功能的實體。今天&#xff0c;我們就來深入探索這個看似簡單的age變量&#xff0c;揭示其背后的奧秘和魅力。 四個方面&am…

供應SKYA21001思佳訊芯片現貨

長期供應各進口品牌芯片現貨&#xff1a; SKYA21001 QM11024TR13 QM12113TR13 QM42391 QM45392 QM28005 RF8020TR13 QM77033DTR13 QM56021TR13-5K 885171 QM77043 QM78207 QM77038TR13 SKY58081-11 QPF5752QTR13-5K RF7198TR13-5K SKY58255-11 SKY85720-11 …

Ubuntu中安裝和配置SSH的完全指南

目錄 前言 第1步&#xff1a;安裝SSH服務器 第2步&#xff1a;檢查防火墻設置 第3步&#xff1a;連接到SSH服務器 第4步&#xff1a;配置SSH服務器&#xff08;可選&#xff09; 更改SSH端口 禁用root登錄 第5步&#xff1a;公鑰認證&#xff08;建議&#xff09; 結論…

XSS Challenges 闖關游戲環境準備:深入指南

在網絡安全領域&#xff0c;理解并掌握跨站腳本攻擊&#xff08;XSS&#xff09;的防御技巧至關重要。為了幫助學習者深入實踐XSS攻擊與防御&#xff0c;“XSS Challenges” 闖關游戲提供了一個實操平臺。本文將詳細介紹如何準備這一環境。 1. 環境準備概述 XSS Challenges 闖…

Kubernetes 之 Secret

Kubernetes 之 Secret Secret 的定義 Secret 解決了密碼、token、秘鑰等敏感數據的配置問題&#xff0c;它避免了把這些敏感數據直接暴露在鏡像或者 Pod 的配置文件中。但是它只是一種相對安全的策略&#xff0c;我們還是可以在容器內找到這些信息。 Secret 的認證方式 認證…

eclipse-向Console控制臺輸出信息

首先這里主要用到的是org.eclipse.ui.console這個包&#xff0c;所以現在順道先來了解一下&#xff1a; org.eclipse.ui.console是一個可擴展的console視圖插件&#xff0c;利用它可以實現各種console&#xff0c;并把它們顯示出來。該插件本身就實現了一個Message Console&…

本地 Java API 訪問云上 HDFS 集群的問題與解決

前言 這篇文章默認是已經在云上配置好了 Haoop 集群&#xff0c;因此本文主要是記錄一些可能會出現錯誤的地方。 如果還不會配置 Hadoop 集群&#xff0c;那么可以參考本專欄的另一篇文章&#xff1a;云上配置 Hadoop 集群詳解 另外在進行本文的學習之前也建議先看看該文章&…

邊緣計算的AI小板——OrangePi AI Pro

簡介 OrangePi AI Pro是一款基于Allwinner H6處理器的嵌入式AI計算設備&#xff0c;適用于物聯網和邊緣計算。它具有強大的性能、低功耗、多接口和小尺寸。 本文分為三個部分&#xff1a; 一、對該板進行簡單的開箱介紹。 二、 將SD卡中的系統遷移到由于該板支持SD卡、SSD…

必看——怎么讓網站實現HTTPS訪問?

讓網站實現HTTPS訪問的步驟可以簡化為以下幾個基本步驟&#xff0c;非常適合非技術背景人士理解&#xff1a; 1. 申請SSL證書&#xff1a; - SSL證書是實現HTTPS的關鍵&#xff0c;它能加密網站數據&#xff0c;保證用戶信息的安全。你可以從一些提供免費SSL證書的機構&#xf…

Spring boot集成mybatis

Spring boot集成mybatis maven依賴 我的spring boot版本是2.5.0&#xff0c;集成mybatis&#xff0c;首先需要數據庫的支持&#xff0c;這里我選擇mysql數據庫&#xff0c;版本是8.0.11&#xff0c;然后使用druid連接池&#xff0c;其次就需要加上mybatis的依賴。 <!--mys…

[ue5]建模場景學習筆記(2)——用vectornoise降低重復率

1.問題分析&#xff1a; 利用改uv的方式降低重復率并不理想&#xff0c;在一定程度上的確能夠達到降低重復率的效果&#xff0c;但遠看仍然有較清晰的重復效果&#xff0c;嘗試優化一下。 2.操作實現&#xff1a; 1.首先先看一下修改后的效果&#xff1a; 這是未修改前&#…

centos打包離線phtone3安裝包rpm

在有網絡的環境中&#xff0c;下載Python3的RPM包及其所有依賴。 打包離線phtone3安裝包centos7rmp # 安裝 yum-utils&#xff0c;這個包包含了 yumdownloader yum install yum-utils # 創建一個目錄來保存下載的RPM包 mkdir python3-rpms # 下載Python3及其所有依賴 yu…

「前端+鴻蒙」核心技術HTML5+CSS3(八)

1、網站布局詳解 網站布局是前端開發中的核心概念之一,它決定了網頁的視覺結構和用戶瀏覽的邏輯順序。以下是幾種常見的布局方式及其代碼示例: 固定布局: 固定布局通常具有固定的寬度和高度,適用于傳統的桌面視圖。 <!DOCTYPE html> <html> <head><…

【Web API DOM02】如何獲取、操作DOM元素

一&#xff1a;獲取DOM元素 1 根據CSS選擇器獲取 語法格式如下&#xff1a; &#xff08;1&#xff09;選中一個DOM元素 document.querySeletor(CSS選擇器) <ul><li>1</li><li>2</li><li>3</li> </ul> document.querySel…

Github上一款開源、簡潔、強大的任務管理工具:Condution

Condution 是一款開源任務管理工具&#xff0c;它以簡潔易用、功能強大著稱。它旨在為用戶提供一個簡單高效的平臺&#xff0c;幫助他們管理日常任務、提高工作效率。 1. Condution 的誕生背景 現如今&#xff0c;市面上存在著許多任務管理軟件&#xff0c;但它們往往價格昂貴…

如何不用口吐蓮花,照樣成為社交達人

一、教程描述 每個人的一生&#xff0c;70%的時候都在溝通&#xff0c;與老板溝通、與家人溝通、與朋友溝通、與陌生人溝通&#xff0c;等等&#xff0c;但是你真的會溝通么&#xff1f;不論是工作上跟上司、同事和客戶間的溝通&#xff0c;還是生活中與家人、朋友、伴侶間的溝…

[ICPC2024 Xi‘an I] ICPC2024 邀請賽西安站(7/8/13)

心得 [ICPC2024 Xian I] ICPC2024 邀請賽西安站重現賽 - 比賽詳情 - 洛谷 7表示賽時ac了7個&#xff0c;8表示含補題總共ac數&#xff0c;13表示題目總數 題目 M. Chained Lights 打表&#xff0c;發現只有k1是YES //#include <bits/stdc.h> #include<iostream&…

Mysql 技術實戰篇

命令行 導出 - -h localhost&#xff1a;指定MySQL服務器的主機地址為本地主機。如果MySQL服務器在其他主機上&#xff0c;請將localhost替換為相應的主機地址。 - -u username&#xff1a;指定連接MySQL服務器的用戶名。將username替換為您的有效用戶名。 - -p&#xff1a;提…

Makefile教程(附通用模板)

工程目錄 工程目錄如圖&#xff0c;build文件夾是編譯出來的 . ├── app │ ├── imx6ul.lds │ ├── main.c │ ├── makefile │ └── start.S ├── bsp │ ├── clk │ │ ├── bsp_clk.c │ │ └── bsp_clk.h │ ├── delay │…