How can I generate this plot?

18 ビュー (過去 30 日間)
Monique Embury
Monique Embury 2020 年 2 月 6 日
コメント済み: Adam Danz 2020 年 2 月 25 日
Hi,
I am trying to generate similar looking plots to the one attached. With this, do you know what kind of plot this is? And how to get the black bars showing where the orifice opening is?
piv.PNG
  12 件のコメント
Adam Danz
Adam Danz 2020 年 2 月 25 日
What defines the color mapping? Another way of asking that, what defines the colobar scale?
Is it the magnitude of the quiver vectors? What defines positive and negatve values? If pos & neg values are defined by the direciton of the quiver vectors, which directions define pos and neg?
Monique Embury
Monique Embury 2020 年 2 月 25 日
I would say that it is defined by the magnitude. Where positive is defined from moving left to right and negitive by right to left.
Without applying the camera roll as I did in the figure, the positive would be from top to bottom and negative would be bottom to top.

サインインしてコメントする。

採用された回答

Adam Danz
Adam Danz 2020 年 2 月 25 日
編集済み: Adam Danz 2020 年 2 月 25 日
The quiver arrows all have fairly small magnitudes which makes it difficult to see the arrows but you can reproduce the figure and zoom in inspect parts of the image.
See inline comments for details.
% Load the data
data = load('average_vels.mat');
% Extract quiver variable for readability
x = data.output_avg(:,1);
y = data.output_avg(:,2);
u = data.output_avg(:,3);
v = data.output_avg(:,4);
% Compute signed magnitude of the quiver vectors where
% positive magnitudes point upward and neg mags point downward
z = hypot(u,v) .* sign(v);
% Reshape the z vector into a matrix where
% zMat(i,j) is the value at x=xVec(i) and y=yVec(j).
[xVec,~, zRow] = unique(x);
[yVec,~, zCol] = unique(y);
zMat = nan([numel(xVec),numel(yVec)]);
zIdx = sub2ind(size(zMat),zCol, zRow);
zMat(zIdx) = z;
% Plot the "heatmap" first
clf()
imagesc(xVec, yVec, zMat)
set(gca, 'YDir', 'Normal')
cbh = colorbar();
ylabel(cbh, 'Vector magnitude (positive is upward')
axis equal
% add the quiver data
hold on
quiver(x,y,u,v)
  4 件のコメント
Monique Embury
Monique Embury 2020 年 2 月 25 日
Thank you for the tip!
Adam Danz
Adam Danz 2020 年 2 月 25 日
Monique, one last thought. If you want white to represent 0 velocity and two other colors (red & blue in this example) to represent upward and downward quiver vectors, you can apply this colormap at the end of the code.
cmap = [linspace(0,1,128)'*[1,1], ones(128,1)]; % The blue range
cmap = [cmap; rot90(cmap,2)]; % add the red range
set(gca, 'Colormap', cmap) % set the colormap
caxis(max(abs(cbh.Limits)) * [-1,1]); %center the color range so white is in the middle

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeData Distribution Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by