2016-08-04 7 views
4

私はgoogleを検索してみんながサポートしていないと言います。私は、マーカーとしてユーザー定義のpngをプロットすることができるオープンコミュニティのMATLAB関数があるのだろうかと思っていた。私が見つけた最も近いものは http://de.mathworks.com/matlabcentral/fileexchange/39487-custom-marker-plot/content/plotCustMark/plotCustMark.mでした。しかし、意図した目的には役立たない。 これについて私に何かを書くことさえ可能かどうか教えてください!ありがとう。Matlabプロットのカスタムマーカー

その他の問題:今、この奇妙な問題があります。私のPNGは黒い背景を持っています!!なぜか分からない。私はアルファ値を下げようとしましたが、まだ動作しません。

ソリューション:私は@brainkzへのコメントで述べた問題は

http://de.mathworks.com/matlabcentral/answers/144411-displaying-image-over-background-making-top-image-background-color-transparent

方法によって解決することができます。

[marker,map,transperancy ] = imread('car.png'); 

を通して、あなたの画像の透明度の設定をインポート後で設定する

handleIm = imagesc([x_low x_high], [y_low y_high], marker) 
set(handleIm ,'AlphaData',transperancy); 

明確化:イメージはすべてtransperantでしたが、別のイメージにオーバーレイしていたので、現在のイメージの背景がデフォルトの黒になりました。私は多くの人にとって本当に役に立つだろうと思うこの問題に対する解決策を投稿しました。

答えて

9

imagescプロットすることができます。私たちは、次のようにこれの自分自身を役に立つことができる:

は、ユーザデータを定義します。

x = 1:10; 
y = 5*rand(size(x)) + 2.5; 

は、マーカー画像をロードします。

marker = imread('icon.png'); 

は、マーカーのサイズを定義し、xyデータを調整します。

markersize = [1,1]; %//The size of marker is expressed in axis units, NOT in pixels 
x_low = x - markersize(1)/2; %//Left edge of marker 
x_high = x + markersize(1)/2;%//Right edge of marker 
y_low = y - markersize(2)/2; %//Bottom edge of marker 
y_high = y + markersize(2)/2;%//Top edge of marker 

次に、ロードした画像を指定された点終わり

for k = 1:length(x) 
    imagesc([x_low(k) x_high(k)], [y_low(k) y_high(k)], marker) 
    hold on 
end 
axis equal 
hold off 

でのプロットは、次を取得する可能性がある:

enter image description here

所望の外観を達成するために、あなたはしばらくの間、パラメータでプレーする必要があるだろう。

希望するもの

+0

ループの外側で 'axis equal'を使用する方が良いのではないでしょうか? –

+0

良い提案@Sardar_Usama – brainkz

+0

ありがとうございます。私はこれが私のプロットの中では別々のレイヤーでスピードを変える必要があると思う。しかし今のところ、それは私がそれを意図したものです。乾杯! –