Mulai buku catatan Python 3 baru di JupyterHub dan masukkan perintah berikut:
# Paket Python untuk menangani urutan multidimensi yang sederhana dan efisien dengan label impor Xarray as xr impor Panda as pd
Rangkaian perintah ini menginisialisasi notebook Python 3 dan paket Python (Xarray, panda) yang digunakan dalam plot data model NetCDF.
Anda sekarang dapat membuat peta. Tentukan nama file, buka dataset, hapus kode waktu, dan gunakan fungsi xarray. dataarray. plot () untuk plot TAS (suhu di dekat permukaan (biasanya 2m)):
Tentukan jalur di mana data model CMIP6 disimpan:
jalur = '~/Shared-Tacco-NS1004K-CMIP-BETZY/NCAR/CESM2-CESM2-CESM2-WACCM/HISTORICAL/R1I1P1F1/AMON/TAS/GN/V20190227/'. Nama file = jalur + 'Tas_amon_cesm2-waccm_historical_r1i1p1f1_gn_gn_185001-201412. nc' Pencetakan(Nama file)
~/Shared-Tacco-NS1004K-CMIP-BETZY/NCAR/CESM2-WACCM/HISTORICAL/R1I1P1F1/AMON/TAS/GN/V20190227/I1P1F1_GN_185001-201412. nc
Baca file NetCDF ke dalam dataset XArray:
ds = xr.Buka dataset(Nama file) ds
Dimensi: (Lat: 192, Lon: 288, Waktu: 1980) Koordinat: * float64-90. 0. 0. 0. 0 6-89. 0 6-87. 17. 1850-01-15 12:00:00 : Cesm_cmip6@ucar. edu creation_date: 2019-01-30t22: 37: 15z data_specs_version: 01. 00. 29 Simulasi semua-penganut dari Eksperimen Masa Lalu_id: External_Varibles: AreaCella Forcing_index: 1 Frekuensi: MONFO. MONFO. org/cmip6. ncar. cesm2-w.
Selanjutnya, plot suhu di dekat permukaan tanah. Anda dapat menggunakan fungsi isel () untuk memilih langkah waktu mana (tahun, bulan) untuk plot:
#Plot Langkah pertama kali ds. tas. isel (waktu = 0) . plot ()
Alternatifnya, Anda dapat menggunakan fungsi sel() untuk mengakses rentang waktu yang berbeda untuk setiap label:
# Untuk merencanakan Mei 1929 ds.Tas.sel(waktu='1929-05').merencanakan()
Untuk menyesuaikan diagram, Anda dapat menggunakan paket matplotlib.
#impor paket python impor matplotlib as mpl #Sesuaikan ukuran diagram mpl.rcParams['gambar. figsize'] = [10., 8.] ds.Tas.isel(waktu=0).merencanakan()
Penggunaan peta warna yang tidak ilmiah seperti peta warna pelangi (jet) akan mendistorsi dan menyembunyikan data yang mendasarinya. Beberapa jenis peta warna di matplotlib dapat menghindari masalah ini, seperti peta warna "viridis" default pada plot di atas. Jika Anda ingin mengakses koleksi peta warna ilmiah (dibuat oleh Fabio Crameri di sini di UiO), Anda dapat menggunakan pernyataan berikut di Jupyter Notebook Anda untuk memuat fungsi berikut:
%jalankan shared-tacco-ns1004k/scripts/load_cmap. ipynb
Klik di sini untuk informasi lebih lanjut tentang peta warna ilmiah dan daftar peta warna yang disertakan.
Fungsi ini sekarang dapat digunakan sebagai argumen peta warna saat membuat plot:
ds.Tas.isel(waktu=0).merencanakan(cmap=peta jalan('batlow'))
Tambahkan sel lain di bawah plot dan tampilkan juga suhu ta, bukan suhu dekat permukaan (tas).
# buka file data dan baca datanya jalur = '~/bagikan-tacco-ns1004k-cmip-betzy/NCAR/CESM2-WACCM/historis/r1i1p1f1/Amon/ta/gn/v20190227/' Nama file = jalur + 'ta_Amon_CESM2-WACCM_historical_r1i1p1f1_gn_185001-201412. nc' Pencetakan(Nama file) ds = xr.Buka dataset(Nama file) # Plot langkah waktu pertama pada tingkat tekanan 850hPa ds.ta.isel(waktu=0, merencanakan=2).merencanakan(cmap=peta jalan('batlow'))
Berbeda dengan tas yang hanya bergantung pada dua dimensi spasial (yaitu lintang dan bujur) dan waktu, ta mempunyai dimensi vertikal tambahan (plev).
Sekarang mari tambahkan sel lain di bawah plot untuk menampilkan angin zonal (ua) dan bukan suhu dekat permukaan (tas). Karena ta dan ua mempunyai dimensi tambahan (sepanjang arah vertikal), Anda juga harus menentukan tingkat vertikal (antara 0 dan 18) untuk membuat plot.
# buka file data dan baca datanya jalur = '~/shared-tacco-ns1004k-cmip-betzy/NCAR/CESM2-WACCM/historis/r1i1p1f1/Amon/ua/gn/v20190227/' Nama file = jalur + 'ua_Amon_CESM2-WACCM_historical_r1i1p1f1_gn_185001-201412. nc' Pencetakan(Nama file) ds = xr.Buka dataset(Nama file) # Plot langkah waktu pertama pada tingkat tekanan tertinggi ds.ua.isel(merencanakan=-1,waktu=0).merencanakan(cmap=peta jalan('brok'))
Anda dapat membuat peta menggunakan paket cartopy Python, atau menganalisis data geografis lainnya. Kami juga menggunakan PyPlot, kumpulan fungsi yang membuat plot lebih mudah.
impor cartopy. crs as CCRS impor matplotlib. pyplot as PLT ara = PLT.angka() ax = PLT.batang(proyeksi=CCRS.cermin()) ds.ua.isel(merencanakan=-1,waktu=0).merencanakan(ax=ax, konversi=CCRS.Piring carry(), cmap=peta jalan('brok') ) ax.Garis pantai()
Seperti yang dapat Anda lihat dari gambar di atas, mengubah metode naungan peta menghilang label pada poros. Anda dapat menambahkan garis kisi:
ax.Garis kisi()
Dalam versi lama Cartopy, platecarree dan proyeksi Mercator mendukung label Latitude/ Longitude:
ara = PLT.angka(Figsize=(15,10)) ax = PLT.batang(proyeksi=CCRS.Mercatted()) ds.ua.isel(merencanakan=-1,waktu=0).merencanakan(ax=ax, konversi=CCRS.Piring carry(), cmap=peta jalan('brok') ) ax.Garis pantai() # Tambahkan garis kisi dengan label gl = ax.Garis kisi(warna='Lightgrey', Gaya garis='-', Gambarlah label=BENAR) # Jangan menggambar label di peta dan benar. gl.Xlabels_top = PALSU gl.ylabels_right = PALSU
Berikut adalah daftar kartretheets yang tersedia.
jalur = '#Jalur Data Anda' Nama file = jalur + '#Ty Anda nama file data'
Gunakan XArray SEL untuk memilih data sesuai dengan bujur 1850-01-31.
ds.ua.sel(Ron=0,waktu="1850-01-31").merencanakan(cmap=peta jalan('brok'))
Ali h-alih memilih satu bujur, rat a-rata semua bujur menggunakan fungsi rat a-rata:
ds.ua.sel(waktu="1850-01-31").rata-rata(Redup='Lon').merencanakan(cmap=peta jalan('brok'))
Karena nilai tekanan dipegang sebagai koordinat vertikal, jelas bahwa perlu untuk mengembalikan sumbu vertikal, menurunkan nilai, dan menurunkan nilainya:
ds.ua.sel(waktu="1850-01-31").rata-rata(Redup='Lon').merencanakan(cmap=peta jalan('brok')) PLT.ylim(PLT.ylim()[::-1])
Pada level tekanan, kami biasanya menggunakan HPA bukan PA.
#Change level tekanan dari PA ke HPA HPA=ds.ua.merencanakan/100 ds['Plev']=HPA ds.ua.merencanakan.satuan['satuan] = 'HPA ds.ua.merencanakan.satuan['Nama standar] = 'Air_pressure' ds.ua.merencanakan #merencanakan ds.ua.sel(waktu="1850-01-31").rata-rata(Redup='Lon').merencanakan(cmap=peta jalan('brok')) PLT.ylim(PLT.ylim()[::-1])
Bagian atas gambar juga dapat disesuaikan. Jika sumbu vertikal berada pada tingkat tekanan, ia dapat diplot menggunakan logaritma sehingga dapat dilihat secara lebih intuitif.
ds.ua.sel(waktu="1850-01-31").rata-rata(Redup='Lon').merencanakan(cmap=peta jalan('brok')) PLT.ylim(PLT.ylim()[::-1]) PLT.ylim(atas=0, 001) PLT.skala(log)
jalur = '#-Model-Data-path' Nama file = jalur + '#File data-model Anda'