2013-06-26 29 views
3

我目前使用MATLAB中的fill命令來創建使用'fill'命令創建的框圖(實際的代碼基於this StackOverflow Question如何防止MATLAB中的fill命令創建沒有「拐角」的框

我的問題是我創建的盒子沒有「角落」。我附上了一個說明問題的PNG。請注意,由於圖像大量渲染,您必須小心一點,不過在此例如我的箭也看起來很奇怪,因爲他們沒有邊緣)enter image description here

我想知道是否有人有什麼可能會出錯的想法?這些箱子出現這樣我使用填充命令後,立即,它具有以下結構:

fill(X,Y,MyFaceColor,'FaceAlpha',0.5,'EdgeColor', MyEdgeColor,'LineStyle','','LineWidth',box_line_width,'EdgeAlpha',1) 
+0

有趣問:另外一個怪胎:我與'rectangle'作爲一個答案,這工作,但不允許透明度玩耍。但是,如果在使用矩形後在**之後使用「fill」或「patch」**,則矩形拐角(這是正確的)很有趣! –

+1

啊!原因是渲染器。使用透明圖形對象將渲染器設置爲「opengl」。這可以通過使用set(gcf,'renderer','painters')來覆蓋;' - 這會幫助你的角落(它們仍然不是很好),但是你的透明度不起作用。這似乎是一個opengl渲染器的bug,我嘗試過使用它,我找不到一個簡單的解決方法,缺少繪製線條的操作。也許有一種已知的方式來做到這一點? –

+0

啊'opengl'與'畫家'的困境。當我試圖以PDF格式導出圖片時,我遇到了這個問題。不幸的是,你無法解決這個問題。謝謝你嘗試! –

回答

4

fill似乎留下空間角落標記,如果他們沒有明確定義的功能。因此,撥打fill與屬性將解決您的問題。但是,由於標記和線寬似乎可以在不同的比例下工作,因此您必須使用標記大小來獲得平滑的邊緣。

例子:

fill(X,Y,'r','FaceAlpha',0.5,'EdgeColor', 'k',... 
    'LineWidth', 5,'EdgeAlpha',1 , 'marker', '.', 'markersize', 15) 
+0

感謝您的支持!你知道是否同樣的想法適用於箭頭? –

+0

@BerkU。如果你用'fill'創建它們,是的。 –

+1

尼斯破解。 +1。這就是爲什麼在Matlab中矢量圖形很難並且更加困難。真正的矢量圖形程序(Adobe Illustrator等)允許您更改線條的「端蓋」樣式和對齊屬性。繪製矢量時,即使CSS的畫布也具有此功能。我不知道[新HG2](http://undocumentedmatlab.com/blog/hg2-update/)是否可以解決這個問題,但我認爲這是一個值得[歸檔](http://www.mathworks .com/support/service_requests/contact_support.do)。 – horchler