python –xarray绘图

文章目录

*
基础绘图:.plot()
进阶绘图–axes

首先导入数据以及相关库:

import xarray as xr
import numpy as np
file='D:\\sst.mnmean.nc'
data=xr.open_dataset(file)

由于该数据纬度坐标 lat是自大至小排列的(即降序排列,为便于后续处理)使用.sortby()对纬度坐标 lat进行升序排列。第一个参数是需进行排序的变量名称(字符串类型);第二个参数ascending是排序方式,若为True则按照升序,否则按照降序。

ds = data.sortby("lat", ascending= True)

python --xarray绘图

基础绘图:.plot()

DataArray 对象plot()方法能够实现快速绘图。

一般来说,我们使用 xr.open_dataset命令读取的nc文件都是 dataset存储格式,因此需要提取里面的绘图数据,转为 dataArray格式,再进行绘图。

默认情况下, .plot()方法具体操作就方法传入 dataArray 的维度大小而定。

  • 一维数组:使用 plt.plot() 绘制的线图;
  • 二维数组:使用 plt.pcolormesh() 绘制的 pcolormesh 图;或者 .plot.contourf()绘制的填色图;或者 .plot.imshow()
  • 二维以上数组:视情况决定

举个例子,我这里读取sst数据进行绘图,发现绘制出的是直方图:

 ds.sst.plot()

python --xarray绘图
参考matplotlib官方绘图示例调整相关参数

如果绘制二维图像,对于SST来说,就是选取一个时间,看下面绘制热带海区sst的例子:

tropical = ds.sst.sel(lat = slice(-20, 20), lon = slice(0, 360)).isel(time=7)
tropical.plot()

python --xarray绘图
直接一步到位以填色图为例:

ds.sst.sel(lat = slice(-20, 20), lon = slice(0, 360)).isel(time=7).plot.contourf()

python --xarray绘图

ds.sst.sel(lat = slice(-20, 20), lon = slice(0, 360)).isel(time=7).plot.contour()

python --xarray绘图
可以看见,一般默认x轴为经度,y轴为纬度。当然,也可以自己通过命令修改:
tropical.plot(y = "lon", x = "lat")

python --xarray绘图
当然,如果你不想要系统的 colrbar,可以自己通过命令调整:
tropical.plot(cmap="bwr")

python --xarray绘图
色标库colormap
当然,还有另一种方法也可以实现上述结果: imshow()运行速度而且较快
tropical.plot.imshow(cmap="GnBu")

python --xarray绘图

进阶绘图–axes

上述简单介绍了一些基本绘图的方式,一般绘制单张图。下面,讲一下如何绘制多张图片,并对各个子图进行具体设置。
首先,准备画图的库,以及相关的数据。

import matplotlib.pyplot as plt
data

大致分为以下三步:

  • 第一步,准备画板;
  • 第二步,指向axes,类似于画板上的一张纸
  • 第三步,在这张纸上进行绘制图像以及其他操作。
fig = plt.figure(figsize=(20,12))
ax=fig.add_subplot(111)

如果你想创建多张图,就可以这样:

ax1=fig.add_subplot(211)
ax2=fig.add_subplot(212)

简单示意一下:

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)

python --xarray绘图
对于你想绘制什么样的图,都可以通过 ax.xxx(),进行绘制。我将常用的图形整理如下:
Axes.plot() 折线图
Axes.scatter    散点图
Axes.step   阶梯图。
Axes.fill_between   填充两条水平曲线之间的区域。
Axes.fill_betweenx  填充两条垂直曲线之间的区域。
Axes.bar    条形图。
Axes.barh   水平条形图。
Axes.pie    饼图。
Axes.vlines 在每个x上绘制从ymin到ymax的垂直线。
Axes.hlines 在从xmin到xmax的每个y上绘制水平线。
Axes.specgram   绘制频谱图。
Axes.contour    绘制等值线。
Axes.contourf   绘制填充图
Axes.imshow 将数据显示为图像,即在2D常规栅格上。
Axes.matshow    将2D矩阵或数组的值绘制为颜色编码的图像。
Axes.pcolor 创建具有非规则矩形网格的伪彩色图。
Axes.pcolorfast 创建具有非规则矩形网格的伪彩色图。
Axes.pcolormesh 创建具有非规则矩形网格的伪彩色图。
Axes.spy    绘制2D阵列的稀疏模式。

上述方法是进行图片绘制,对于添加标签、标题、x\y轴的标签,间隔等设置,有专门的设置方法,具体详见下面链接;

matplotlib.axes属性设置

下面简单列几个最常用的:

Axes.set_xlim   设置x轴范围
Axes.set_ylim   设置y轴范围
Axes.set_xlabel 设置x轴的标签。
Axes.set_ylabel 设置y轴的标签。
Axes.set_title  设置标题。
Axes.legend 放置一个图例。
Axes.set_xticks 设置xaxis的刻度。
Axes.set_xticklabels    使用字符串标签列表设置xaxis的标签。
Axes.grid   增加网格线。

Original: https://blog.csdn.net/weixin_44237337/article/details/120243412
Author: 简朴-ocean
Title: python –xarray绘图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765665/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球