如何使用MATLAB畫出漂亮清晰的眾多箭頭?
在研究取向問題時需要畫出一片區域的取向分布,我使用MATLAB的quiver3函數,畫出了取向,但是可視性非常差,基本分辨不出內部是如何取向的,就想問如何畫出比較清晰明了的多個箭頭?如果MATLAB做不到,什麼工具能夠做到?(下圖第一章是文獻中畫的比較好的,明顯能看出取向的變化,第二張是我用quiver3函數畫的,就那麼的凌亂,並且我查看了quiver3的DOC文件,好像沒有能調節箭頭形狀的選項,我要解決的問題時,在x*y*z個格點上,根據給出的每個格點的取向,在每一點都畫出取向的方向和大小
這種圖在MATLAB是用coneplot畫的:
[x,y,z] = meshgrid(-1:.1:1,-1:.1:1,-3:.1:3);
[u,v,w] = deal(y./sqrt(x.^2+y.^2),-x./sqrt(x.^2+y.^2),1./(cos(z/3)+1));
c = num2cell((rand(2000,3)-.5)*diag([2 2 6]),1);
set(coneplot(x,y,z,u,v,w,c{:},2),"facec",[.2 .7 1],"edgec","n")
axis image, view(3), camlight, lighting gouraud
@St Jason
個人覺得太稀疏了可視化效果不好,所以把箭頭調小了些,又加密了些,光照也調整到正面了Mathematica代碼:
VectorPlot3D[{y/Sqrt[x^2+y^2],-(x/Sqrt[x^2+y^2]),1/(Cos[z/3]+1)},
{x,-1,1},{y,-1,1},{z,-3,3},
BoxRatios-&>Automatic,Axes-&>False,VectorScale-&>Small,
VectorPoints-&>RandomReal[{-1,1},{1000,3}].DiagonalMatrix[{1,1,3}],
VectorStyle-&>{RGBColor[.2,.7,1],Specularity[1,20],"Arrow3D"}]
做可視化就別用matlab啦,默認效果好難看,要做的好看實在太費勁了。我一直用 mathematica 來做,題主你看這個效果如何?
貼一下代碼吧:
VectorPlot3D[{y/Sqrt[x^2 + y^2], -x/Sqrt[x^2 + y^2],
1/(Abs@z + 1)}, {x, -1, 1}, {y, -1, 1}, {z, -3, 3},
PlotRange -&> All, BoxRatios -&> Automatic,
VectorPoints -&> (RandomReal[{-1, 1}, {800, 3}].{{1, 0, 0}, {0, 1,
0}, {0, 0, 3}}),
VectorStyle -&> {Graphics3D[Cone[{{-.02, 0, 0}, {1.5, 0, 0}}, 0.3]]},
VectorScale -&> 0.05, ViewVector -&> {{0, -5, 0}, {0, 0, 0}},
ViewVertical -&> {0, 0, 1}, ViewAngle -&> Pi/4, Ticks -&> None]
我可以用其他軟體畫么
推薦閱讀:
※如何看待USnews2016年度世界大學工程學專業排名?
※在APG III出現以後,依靠形態學建立的植物分類系統會被徹底拋棄嗎?
※你在研究過程中是否創造過術語?有哪些有趣的思路?
※物理科研小白如何正確入門?
※有那些看著沒什麼用,實際上真沒什麼用的科研成果?