【親測有效】
在作圖過程中,如果想將局部信息展示出來并且畫在同一張圖中,一般的MATLAB作圖法就比較拙計了,好在MATLAB還是很強大的,當然,除了不能當女朋友之外 .... ╮(╯▽╰)╭
function showdetail()% 在當前的axes上操作,用矩形框選出感興趣的一
% 塊區域然后在現有的axes里新建一axes將其畫出set(gcf,'color','white');
% 拿到axes在figure中的坐標值及其刻度值分布范圍
Pos = get(gca,'Position');
X0 = Pos(1);
Y0 = Pos(2);
DX = Pos(3);
DY = Pos(4);
DLX = xlim;
DLY = ylim;% 拿到axes中曲線數據
h = findobj(gcf,'Type','line');
xdata = get(h,'XData');
ydata = get(h,'YData');
Color = get(h,'Color');
LineStyle = get(h,'LineStyle');
LineWidth = get(h,'LineWidth');
Marker = get(h,'Marker');
MarkerSize = get(h,'MarkerSize');
MarkerEdgeColor = get(h,'MarkerEdgeColor');
MarkerFaceColor = get(h,'MarkerFaceColor');% 選取需要放大顯示的細節部分ROI
h1 = imrect; % 框選出需要的區域
wait(h1);
pos = getPosition(h1); % 返回區域的位置和大小
x0 = pos(1);
y0 = pos(2);
dx0 = pos(3);
dy0 = pos(4);% 細節部分的下標
if iscell(xdata) == 0 indx1 = find( xdata >= x0 );indx2 = find( xdata <= x0+dx0 );indx = indx1(1):indx2(end);
elsem = length(xdata);indx1 = find( xdata{1}>=x0 );indx2 = find( xdata{1}<=x0+dx0 );indx = indx1(1):indx2(end);
endhold on;
LineX = x0:dx0/10:x0+dx0;
LineY = y0:dy0/10:y0+dy0;
plot(LineX,y0*ones(size(LineX)),'k');
plot(LineX,(y0 + dy0)*ones(size(LineX)),'k');
plot(x0*ones(size(LineY)),LineY,'k');
plot((x0+dx0)*ones(size(LineY)),LineY,'k');h2 = imrect;
wait(h2);
pos = getPosition(h2);
x = pos(1);
y = pos(2);
dx = pos(3);
dy = pos(4);xn = X0 + DX*(x - DLX(1))/( DLX(2) - DLX(1) );
yn = Y0 + DY*(y - DLY(1))/( DLY(2) - DLY(1) );
dxn = DX*dx / ( DLX(2) - DLX(1) );
dyn = DY*dy / ( DLY(2) - DLY(1) );
delete(h1);
delete(h2);
axes('Position', [xn yn dxn dyn]);if iscell(xdata) == 0 plot(xdata(indx),ydata(indx),...'Color',Color,...'LineStyle',LineStyle,...'LineWidth',LineWidth,...'Marker',Marker,...'MarkerSize',MarkerSize,...'MarkerEdgeColor',MarkerEdgeColor,...'MarkerFaceColor',MarkerFaceColor);
elsefor i = 1:mplot(xdata{i}(indx),ydata{i}(indx),...'Color',Color{i},...'LineStyle',LineStyle{i},...'LineWidth',LineWidth{i},...'Marker',Marker{i},...'MarkerSize',MarkerSize{i},...'MarkerEdgeColor',MarkerEdgeColor{i},...'MarkerFaceColor',MarkerFaceColor{i});hold on;endend
set( gca , 'Box', 'off');
axis([x0 x0+dx0 y0 y0+dy0]);
hold off;end
先準備好一張圖,然后直接在命令行里運行
showdetail();
然后分為如下幾部操作:
【1】這是事先準備好的一張圖
?
【2】運行程序后選擇ROI,即感興趣的區域,雙擊左鍵確定
?
?
【3】選擇你想要放置的地方,雙擊左鍵確定
?
?
【4】成品圖
?
再次感受到了MATLAB的強大。。。。。當然,這里并沒講什么氣泡動力學,只是借用了一張數值解的圖......( ̄▽ ̄).....,下一章應該會講一講瑞利氣泡動力學 ( ̄︶ ̄)
?