緯度, 経度の図を面積の大きさを考慮して作りたい

下図のような図の作り方をご存知の方いらっしゃいますか
経度, 緯度で表される地点においてそれぞれある値を持ちます。
そこで, 緯度経度の図を作り、その値の大きさに応じて色分けしたいです。
ただし、赤道付近の領域は大きく、極域の領域は小さく表示されるようにしたいです。
よろしくお願いいたします。

댓글 수: 5

Dyuman Joshi
Dyuman Joshi 2023년 12월 29일
The best bet is to use axesm to create a map with robinson projection and then use surfm, surfacem, patchm or fillm.
I don't see any other method to color a map in the specific way mentioned.
智希
智希 2023년 12월 29일
Thank you so much!
Kojiro Saito
Kojiro Saito 2024년 1월 1일
色分けするための緯度経度ごとのデータはどのようなデータでしょうか?
智希
智希 2024년 1월 3일
ある(緯度, 経度)に対応する地点における重力の大きさです。
緯度、経度1度ずつでメッシュに切っており、各地点で1つの決まった定数値を持っています。
Dyuman Joshi
Dyuman Joshi 2024년 1월 3일
How do you define the values?

댓글을 달려면 로그인하십시오.

 채택된 답변

Kojiro Saito
Kojiro Saito 2024년 1월 3일

3 개 추천

投影法についてはこちらのドキュメントにまとまっていますが、赤道付近が広く極域は狭いのはRobinsonやWagner IVなどが該当します。(Mapping Toolboxが必要になります。
axesmで投影法を指定した後に、surfmcontourfmで塗りつぶしてプロットします。ここでは緯度経度1°毎にダミーの重力値を入れたメッシュデータを作り、surfmでプロットするサンプルを書きます。
dummyGravityData = repmat(9.825:(-0.0005):9.7805, 360, 1)'; % 極域から赤道へと徐々に減っていく重力値のダミーデータ90°x360°
dummyGravityData = [dummyGravityData; flip(dummyGravityData)]; % データを拡張して180°x360°にする
lonLim=0:1:359;
latLim=-90:1:89;
[lonMesh, latMesh]=meshgrid(lonLim, latLim); % 緯度経度のメッシュデータを作成
% Robinsonの投影法を指定してaxesmを作成
% 緯度、経度ともにグリッド間隔を45°に変更
% 経度はデフォルトでは西経がマイナス値になるので、プラス値で表記するようにMapLonLimitを指定
h = axesm('MapProjection','robinson', 'Grid','on','MeridianLabel','on', 'ParallelLabel','on','MapLonLimit', [0 360],...
'PLineLocation', 45, 'MLineLocation', 45, 'LabelFormat', 'none');
% surfmでメッシュデータを塗りつぶしてプロット
surfm(latMesh, lonMesh, dummyGravityData)
さらに、青→黄→赤でグラデーションするようにデフォルトのカラーマップから変更する必要があります。colormapのドキュメントに詳細がありますが、parulaやjetなどの予め用意されているカラースキームを使うことができますが、今回は貼り付けていただいた画像のRGBの色を抽出して、カスタムのカラーマップを作ってみます。もしGMTなどの他のツールを使ってプロットしている場合、そちらで使っているカラーマップをカスタムカラーマップとしてMATLABで定義することも可能です。
% 青→黄→赤でグラデーションするカラーマップを作成
mymap = [
230 59 49
255 242 169
212 238 244
92 159 198 ] /255;
% 4色を補間して180色にする
cmap = interp1(1:4, mymap, linspace(1,4,180),'linear');
colormap(cmap)
こんな感じでいかがでしょうか。

댓글 수: 1

智希
智希 2024년 1월 4일
ありがとうございます。
参考にさせていただきます。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품

릴리스

R2023a

태그

질문:

2023년 12월 29일

댓글:

2024년 1월 4일

Community Treasure Hunt

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

Start Hunting!