plot 2D contours
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
I need help to plot 2D contours as shown in the figure for mutiple files. I am attaching my code and data files for your reference. I am unable to plot it due to some mistake in the code.
navg = 11;
filenames = cell(navg,1);
for i = 1:navg
filenames = sprintf('queen2_test_%d.dat', i);
mydata{i}=importdata(filenames);
% writematrix(avg_mat{i}, filenames{i});
R = mydata{i}(:,1);%X
C = mydata{i}(:,2);%Y
F = mydata{i}(:,7);%F(X,Y)
figure
contour(R,C,repmat(F,1,numel(C))');
grid on;
end
saveas(gcf,figure,'.png']);

採用された回答
Ameer Hamza
2020 年 5 月 5 日
編集済み: Ameer Hamza
2020 年 5 月 5 日
Run the attached code with the files you provided
navg = 11;
filenames = cell(navg,1);
for i = 1:navg
filenames = sprintf('queen2_test_%d.dat', i);
mydata{i}=importdata(filenames);
% writematrix(avg_mat{i}, filenames{i});
R = mydata{i}(:,1);%X
C = mydata{i}(:,2);%Y
F = mydata{i}(:,7);%F(X,Y)
rg = linspace(min(R), max(R), 100);
cg = linspace(min(C), max(C), 100);
[Rg, Cg] = meshgrid(rg, cg);
Fg = griddata(R, C, F, Rg, Cg);
figure
ax = axes();
ax.YDir = 'reverse';
hold on;
contourf(Rg,Cg,Fg);
ax.XAxisLocation = 'top';
cb = colorbar('Location', 'south');
cb.Position(2) = cb.Position(2)-0.11;
grid on;
saveas(gcf,filenames(1:end-4),'png');
delete(gcf);
end
19 件のコメント
Ameer Hamza
2020 年 5 月 5 日
編集済み: Ameer Hamza
2020 年 5 月 5 日
Note if you are using R2020a, then you can replace the saveas() line to the following line to get a better quality output
exportgraphics(gcf,[filenames(1:end-4),'.png'], 'Resolution', 300);
If you don't have R2020a, then download this package from FEX: https://www.mathworks.com/matlabcentral/fileexchange/23629-export_fig and use the following line to save high-resolution output
export_fig(gcf,[filenames(1:end-4),'.png'], '-r300');
Thanks for helping me out. I need a request.
1, I request to flip the x axis an y axis as shown in the figure.

2, contour values as shown in the below figure

Ameer Hamza
2020 年 5 月 5 日
Run the updated code.
MS
2020 年 5 月 5 日
Thanks, I want contour also fliped as shwon in the figure. in the updated code, the contour is not flipped.

Ameer Hamza
2020 年 5 月 5 日
check the updated code.
MS
2020 年 5 月 5 日
Awesome. I am really grateful to you. The axes is interferrring with the contour as shown in the figure(going inside the contour plot). is it a a bug?

Ameer Hamza
2020 年 5 月 5 日
This problem is not happening in R2020a. As a quick-fix, you can move the axes a bit up
ax = axes();
ax.YDir = 'reverse';
ax.Position(2) = ax.Position(2)+0.02; % <=== add this line. Tune value of 0.02 until there is no overlap
MS
2020 年 5 月 5 日
Thank you very much.
How to set same maximum and minimum axis for the plot. Please add your inputs.
caxislimit = 150;
caxis(obj.hAxes,[-caxislimit caxislimit]);
Ameer Hamza
2020 年 5 月 7 日
What does that represent? I am not sure why that could be useful. Also, It is impossible in MATLAB. The second limit should be greater than first.
Thanks, i want the axis limt eg.,[-100 to 100]. to be same for all the figures to be saved. It will be helpful to compare the intensity between the images. Kindly let me know if you need any calrifications.

Ameer Hamza
2020 年 5 月 7 日
Oh! I misread it to be caxis(obj.hAxes, [150 150]). Your syntax seems correct. It should show colorbar between -150 to 150.
MS
2020 年 5 月 7 日
Thanks, i am getting error when i insert the same line in the updated code.
error:
Unable to resolve the name obj.hAxes
Ameer Hamza
2020 年 5 月 7 日
Are you making a GUI using GUIDE? Where did you get the statement 'obj.hAxes'
MS
2020 年 5 月 7 日
no, i got it from some gui code. I got the line correct now. Thanks for the help
caxis([-150 150])
colorbar
Ameer Hamza
2020 年 5 月 7 日
Yes, if you have single axes then you don't need to specify an axes handle.
MS
2020 年 5 月 7 日
okay. thank you for correcting the mistake.
hi ameer,
I want to label the colur bar as shown in the figure1.

my current code is labelling beside as shown in the figure below instead of labelling on the top as shown in the above figure1 .
h = colorbar;
xlabel(h, 'ω')
Kindly suggest a code.

MS
2020 年 5 月 8 日
I made the code to change the postion. Thanks.
pos = get(h,'Position');
h.Label.Position = [2 30]; % to change its position
h.Label.Rotation = 0; % to rotate the text
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Contour Plots についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
