[爆卦]matlab plot點大小是什麼?優點缺點精華區懶人包

為什麼這篇matlab plot點大小鄉民發文收入到精華區:因為在matlab plot點大小這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者diva (Tremendo!)看板MATLAB標題[問題] 得到plot的zoom的大小時間F...


在畫圖時

figure的menu上

有可以zoom in zoom out 的兩個按鈕

可以放大和縮小圖

比方說我zoom in了兩次

我該如何讓程式知道我目前的圖已經zoom了多少次了嗎?




我的問題是發生在

我想在一張figure上

在滑鼠點擊的位置畫出一個紅色點

並且可以配合zoom in使用

程式碼如下

f=figure(1) ;
imshow('cell.tif') ;
set(f,'windowbuttondownfcn',[' ;' ...
'imshow(''cell.tif'') ;' ...
'hold on ;' ...
'CurrentPt=get(gca,''CurrentPoint'') ;' ...
'plot(CurrentPt(1,1),CurrentPt(1,2),''ro'') ;' ...
'hold off;']) ;




可是每次zoom in完

點擊下一個點後

圖片又會zoom out回原始大小

不知道有沒法可以克服




只要能得到zoom了幾次的值

或許可以利用zoom(Factor)來設定









--
okgogogo:set第二行imshow去掉 05/04 23:21
okgogogo:想知道zoom情況,自己寫個UI按鈕 可參考help camva 範例 05/04 23:24
diva:imshow不能去掉 理由是 我希望圖上只能有一個紅圈 05/05 19:59
diva:如果imshow去掉 又hold on 則紅圈會隨著滑鼠點擊越來越多 05/05 20:00
diva:如果imshow保留 hold off 則只有紅圈 而無底圖 05/05 20:00
diva:camva剛試過並不合用 理由是 camva會把axes的框整個放大縮小 05/05 20:01
diva:和zoom的只放大縮小圖片 而axes大小不變 有差異 05/05 20:02
diva:還是謝謝你的回答 05/05 20:02



我後來自己把問題解決了一半

把程式加上2行就可以了

f=figure(1) ;
imshow('cell.tif') ;
set(f,'windowbuttondownfcn',[' ;' ...
'zoom reset ;' ...
'imshow(''cell.tif'') ;' ...
'zoom out ;' ...
'hold on ;' ...
'CurrentPt=get(gca,''CurrentPoint'') ;' ...
'plot(CurrentPt(1,1),CurrentPt(1,2),''ro'') ;' ...
'hold off;']) ;


zoom reset 設定目前zoom的狀態為起始狀態
zoom out 返回zoom的原始狀態


但是還是有一個問題

這麼做的話

點選figure上的zoom out按鈕

就沒辦法恢復成圖片的原始大小了

不知道有沒有辦法可以解決



※ 編輯: diva 來自: 140.112.103.220 (05/05 20:14)
okgogogo:只有一個紅點,不應該重新plot應該用set改變 05/05 20:50
okgogogo:我的程式plot只會出現第一次,之後都用set, 05/05 20:50
okgogogo:你一用它內建繪圖指令,屬性都會被改變像bar指令 05/05 20:51
okgogogo:你圖應該也只是載入一次,其他是改變軸之類的... 05/05 20:52

的確 如你所說

set可以解決zoom的問題

感謝!!

另外想請問一下

你提到應該用set而不是重畫

請問用set有什麼好處嗎?

因為set和重畫比起來

程式量好像差不多










針對我原來的寫法

我也找到解決的方法了

f=figure(1) ;
imshow('cell.tif') ;
set(f,'windowbuttondownfcn',[' ;' ...
' ;' ...
' ;' ...
'XLim=get(gca,''XLim'') ;' ...
'XTick=get(gca,''XTick'') ;' ...
'XTickLabel=get(gca,''XTickLabel'') ;' ...
'YLim=get(gca,''YLim'') ;' ...
'YTick=get(gca,''YTick'') ;' ...
'YTickLabel=get(gca,''YTickLabel'') ;' ...
' ;' ...
'imshow(''cell.tif'') ;' ...
' ;' ...
' ;' ...
'set(gca,''XLim'',XLim) ;' ...
'set(gca,''XTick'',XTick) ;' ...
'set(gca,''XTickLabel'',XTickLabel) ;' ...
'set(gca,''YLim'',YLim) ;' ...
'set(gca,''YTick'',YTick) ;' ...
'set(gca,''YTickLabel'',YTickLabel) ;' ...
' ;' ...
'hold on ;' ...
'CurrentPt=get(gca,''CurrentPoint'') ;' ...
'plot(CurrentPt(1,1),CurrentPt(1,2),''ro'') ;' ...
'hold off;']) ;




※ 編輯: diva 來自: 140.112.103.220 (05/05 22:29)
※ 編輯: diva 來自: 140.112.103.220 (05/05 22:30)

你可能也想看看

搜尋相關網站

A PHP Error was encountered

Severity: Core Warning

Message: Module 'imagick' already loaded

Filename: Unknown

Line Number: 0

Backtrace: