我一直試圖獲得半透明圓形標記在對數對數散點圖。 MATLAB自己scatter
繪圖功能不會產生半透明標記(參見下面的註釋),所以我用這個奇妙的工具scatter_patches
從Central File Exchange和它工作得很好:對數對數散點圖上的半透明標記
不過,我有問題適應了這個代碼對數 - 對數散點圖。爲了獲得這個程序的對數 - 對數散點圖,我需要修復兩件事:
1。將軸更改爲對數刻度。這可以通過在61行之後添加以下內容來實現:
set(cax, 'XScale', 'log');
set(cax, 'YScale', 'log');
這會生成正確的對數標度和網格點。
2。但是,在我修正了1.之後,標記的大小在我的情節中並不統一。在日誌圖上,軸的較低值區域被放大。在scatter_patches圖中,座標軸下側的標記越大,朝向座標軸越高的一側越小。所以,整個地塊的標記大小並不相同。我嘗試使用log10(cSize)
而不是cSize
在第221-222行,但這只是減少了最大和最小標記大小之間的差異。它在圖上沒有產生相同大小的標記。
如果有人對我在這裏可能錯過的東西有所瞭解,請分享。
任何幫助將不勝感激。
您是否嘗試過使用Matlab的scatter plot with'set(hadle_to_scatterplot,'MarkerFaceColor','None')'?看起來像'scatter_patches'創建一個圓圈而不是標記。 – Crowley
我試過了。將「MarkerFaceColor」設置爲「無」與將透明度設置爲100%等效。但是,我想控制透明度。如果像'MarkerFaceAlphaValue'這樣的屬性存在,那麼我可以將透明度設置爲任意值。但是這樣的財產不存在。 scatter_patches使用補丁代替標記;所以可以設置FaceAlphaValue。該程序還允許創建其他形狀,而不僅僅是圓形。該程序在線性圖上效果很好。這是需要進行一些更改的日誌圖。 – user164568
我認爲,這[文章](您可能會感興趣的話)(http://ch.mathworks.com/matlabcentral/answers/263990-how-to-draw-a-circle-in-a-log-log-plot)。你有嘗試在這裏添加'exp()':set(patchObjects(i),'XData',cSize * sin(patchSpec)/ ptsPerXUnit + xs(i)); (patchSpec)/ ptsPerYUnit + ys(i));'like'set(patchObjects(i),'XData',cSize * exp(sin(patchSpec))/ptsPerXUnit + xs(i));'但我沒有試過! – obchardon