MAtlab如何实现axes中图片放大和缩小

MAtlab如何实现axes中图片放大和缩小,第1张

zoom 指令可以将图形放大或缩小,若要将图形放大时用 zoom on,zoom out,当不再须要放大或缩小图形时用 zoom off。

>> M=peaks(25); % peaks 是MATLAB内建的一个像山峰的特别函数,25是这个

>> plot(M) % 函数矩阵的大小,如果数值愈大则画出的山峰图愈平滑

>> zoom on % 开始放大图形,每按一次Enter键图形就放大一次

>> zoom out % 开始缩小图形,每按一次Enter键图形就缩小一次

>> zoom off % 停止图形放大或缩小功能

可以使用函数来实现此功能

图形移动,放大缩小等功能的函数 :

function axdrag(action)

%AXDRAG Pan and zoom with simple keystrokes

% Use this tool to move quickly around the data displayed in a 2-D plot

% Make sure the figure has focus, and then press any of the following

% keys to zoom in or out Clicking and dragging will pan the data

%

% Keys you can use are:

% z, Z: zoom in, zoom out, in both dimensions

% x, X: zoom in, zoom out, x dimension only

% y, Y: zoom in, zoom out, y dimension only

% arrow keys: pan the data

% a: axis auto

% n: axis normal

% e: axis equal

% g: toggle grid state

% spacebar: toggle axis tick display state

% h: help

%

% Example

% c = pi(1+sqrt(5))/2;

% x = 0:1000;

% r = 272378;

% z = cumsum(exp(i(cxx + r)));

% plot(real(z),imag(z));

% axdrag

% % Now click, drag, and use special keys

% Ned Gulley, March 2003

persistent x0 dx

if nargin < 1,

action = 'initialize';

end

% Use these variables to change the zoom and pan amounts

zoomFactor = 09;

panFactor = 002;

% Get rid of the help window if it's being displayed

helpTextAxis = findobj(gcbf,'Type','axes','Tag','axdraghelpaxis');

if isempty(helpTextAxis)

helpWasOff = 1;

else

helpWasOff = 0;

delete(helpTextAxis);

end

switch action

case 'initialize'

set(gca,'ButtonDownFcn','axdrag start')

set(gcf,'KeyPressFcn','axdrag keypress')

set(gcf,'DoubleBuffer','on')

case 'start'

set(gcbf,'Units','pixel');

set(gca,'Units','pixel');

set(gcbf,'WindowButtonMotionFcn','axdrag move')

set(gcbf,'WindowButtonUpFcn','axdrag stop')

currentPoint = get(gcbf,'CurrentPoint');

x0 = currentPoint;

axdrag move

case 'move'

currentPoint = get(gcbf,'CurrentPoint');

dx = currentPoint - x0;

x0 = currentPoint;

ap = get(gca,'Position');

xLim = get(gca,'XLim');

yLim = get(gca,'YLim');

set(gca,'XLim',xLim-(diff(xLim)dx(1)/ap(3)),

'YLim',yLim-(diff(yLim)dx(2)/ap(4)));

case 'stop'

set(gcbf,'WindowButtonMotionFcn','')

set(gcbf,'WindowButtonUpFcn','')

set(gcbf,'Units','normalized');

set(gca,'Units','normalized');

case 'keypress'

currChar = get(gcbf,'CurrentCharacter');

if isempty(currChar)

return

end

if currChar=='a',

axis auto

elseif currChar=='e',

axis equal

elseif currChar=='n',

axis normal

elseif currChar=='g',

grid

elseif currChar==28,

xLim=get(gca,'XLim');

xLimNew = xLim + panFactordiff(xLim);

set(gca,'XLim',xLimNew)

elseif currChar==29,

xLim=get(gca,'XLim');

xLimNew = xLim - panFactordiff(xLim);

set(gca,'XLim',xLimNew)

elseif currChar==30,

yLim=get(gca,'YLim');

yLimNew = yLim - panFactordiff(yLim);

set(gca,'YLim',yLimNew)

elseif currChar==31,

yLim=get(gca,'YLim');

yLimNew = yLim + panFactordiff(yLim);

set(gca,'YLim',yLimNew)

elseif abs(currChar)==32,

if isempty(get(gca,'XTick')),

set(gca,'XTickMode','auto','YTickMode','auto')

else

set(gca,'XTick',[],'YTick',[],'Box','on')

end

elseif (currChar=='x') | (currChar=='X'),

if currChar == 'X',

zoomFactor=1/zoomFactor;

end

xLim=get(gca,'XLim');

xLimNew = [0 zoomFactordiff(xLim)] + xLim(1) + (1-zoomFactor)diff(xLim)/2;

set(gca,'XLim',xLimNew)

elseif (currChar=='y') | (currChar=='Y'),

if currChar == 'Y',

zoomFactor=1/zoomFactor;

end

yLim=get(gca,'YLim');

yLimNew = [0 zoomFactordiff(yLim)] + yLim(1) + (1-zoomFactor)diff(yLim)/2;

set(gca,'YLim',yLimNew)

elseif (currChar=='z') | (currChar=='Z'),

if currChar == 'Z',

zoomFactor=1/zoomFactor;

end

xLim=get(gca,'XLim');

yLim=get(gca,'YLim');

xLimNew = [0 zoomFactordiff(xLim)] + xLim(1) + (1-zoomFactor)diff(xLim)/2;

yLimNew = [0 zoomFactordiff(yLim)] + yLim(1) + (1-zoomFactor)diff(yLim)/2;

set(gca,'XLim',xLimNew,'YLim',yLimNew)

elseif currChar=='h',

if helpWasOff

str = {

' '

' AXDRAG Keys you can use are:'

' '

' z, Z: zoom in, zoom out, both dimensions '

' x, X: zoom in, zoom out, x dimension only '

' y, Y: zoom in, zoom out, y dimension only '

' arrow keys: pan the data'

' a: axis auto'

' n: axis normal'

' e: axis equal'

' g: toggle grid state'

' spacebar: toggle axis tick display state'

' h: help'

' '

' Press ''h'' again to dismiss this message'

' '

};

helpTextAxis = axes(

'Tag','axdraghelpaxis',

'Units','characters',

'Position',[2 1 76 16],

'Visible','off');

text(0,1,str,

'Parent',helpTextAxis,

'VerticalAlignment','top',

'BackgroundColor',[1 1 08],

'FontName','courier',

'FontSize',6);

innodb_data_home_dir = /longxibendi/mysql/mysql/var/

#innodb_data_file_path = ibdata1:1G:autoextend

innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #表空间

innodb_file_io_threads = 4 #io线程数

如下修改就好了

[FileName2,PathName2] = uigetfile('bmp','jpg','Select BMP file');

path=fullfile(FileName2,FileName2)

img=imread(path);

axes(handlesaxes1);

imshow(img);

原因可能是你的GUI中有其他figure出现时,在那个figure中可能没有tag没有axes1的控件

还有你的路基那样那个组合有可能出错 做好使用fullfile函数

1、楼上所说Layer属性不靠谱,该属性只决定axes的坐标轴、Tick等要素是否被坐标系里面的对象如patch、surface、image等所遮盖,与其它无关。

 

2、楼主的要求做不到。对于同一类型的图形对象,可以通过设置Children的顺序来调整其显示顺序,但是,GUIDE里面的text属于uicontrol控件,而控件总是显示在axes的前面,这一点据我所知无法改变。

 

3、一般来说,text应该和axes放在不同的位置,便发生重叠。如果确实有需要把text放在axes的后面显示,可以考虑单独为text创建一个axes,并将axes属性设为不可见,然后在该axes上面使用text函数创建文字对象(注意,不是uicontrol),应该可以达到这个目的。但是:(1)这个似乎只能通过编程实现,无法用GUIDE来做;(2)我仍然不认为有需要用axes遮盖text的这种应用场景。

MATLAB中的绘图函数有下列基本颜色:

红色——"red"

绿色——"green"

蓝色——"blue"

青色——"cyan"

洋红色——"magenta"

**——"yellow"

黑色——"black"

白色——"white"

如需要其他颜色,可以用调色板进行调整 RGB 三元组。如RGB 三元组 [08500 03250 00980]

fig,ax=pltsubplots的意思是将pltsubplots()函数的返回值赋值给fig和ax两个变量。

pltsubplots()是一个函数,返回一个包含figure和axes对象的元组,因此,使用fig,ax=pltsubplots()将元组分解为fig和ax两个变量。

通常,我们只用到ax:

fig,ax = pltsubplots(nrows=2, ncols=2)

axes = axflatten()

把父图分成22个子图,axflatten()把子图展开赋值给axes,axes[0]便是第一个子图,axes[1]是第二个。

扩展资料

在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。所属关系如下:

def subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,        

subplot_kw=None, gridspec_kw=None, fig_kw):

参数:

nrows,ncols:子图的行列数。

sharex, sharey:

设置为 True 或者 ‘all’ 时,所有子图共享 x 轴或者 y 轴,

设置为 False or ‘none’ 时,所有子图的 x,y 轴均为独立,

设置为 ‘row’ 时,每一行的子图会共享 x 或者 y 轴,

设置为 ‘col’ 时,每一列的子图会共享 x 或者 y 轴。

返回值

fig: matplotlibfigureFigure 对象

ax:子图对象( matplotlibaxesAxes)或者是他的数组

怎么给类 matlabgraphicsaxisaxes'的值定义函数 subsindex'

显示的错误意思是:下标标示使用错误,下标标示函数“subsindex”不能定义成符号变量sym类型。

这里你对于函数的定义出现了错误,应该这样写:

>> syms x

>> f=1/x

f =

1/x

>>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12188035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存