PyVista DataArray accessors for xarray
Project description
PyVista xarray
PyVista DataArray accessor for xarray to visualize datasets in 3D
🚀 Usage
You must import pvxarray
in order to register the DataArray
accessor with
xarray. After which, a pyvista
namespace of accessors will be available.
Try on MyBinder: https://mybinder.org/v2/gh/pyvista/pyvista-xarray/HEAD
The following is an example to visualize a RectilinearGrid
with PyVista:
import pvxarray
import xarray as xr
ds = xr.tutorial.load_dataset("air_temperature")
da = ds.air[dict(time=0)] # Select DataArray for a timestep
# Plot in 3D
da.pyvista.plot(x="lon", y="lat", show_edges=True, cpos='xy')
# Or grab the mesh object for use with PyVista
mesh = da.pyvista.mesh(x="lon", y="lat")
Or you can read VTK meshes directly to xarray:
import xarray as xr
ds = xr.open_dataset("data.vtk", engine="pyvista")
ds["data array"].pyvista.plot(x="x", y="y", z="z")
⬇️ Installation
pip install pyvista-xarray
💭 Feedback
Please share your thoughts and questions on the Discussions board. If you would like to report any bugs or make feature requests, please open an issue.
If filing a bug report, please share a scooby Report:
import pvxarray
print(pvxarray.Report())
🏏 Further Examples
Simple RectilinearGrid
import numpy as np
import pvxarray
import xarray as xr
lon = np.array([-99.83, -99.32])
lat = np.array([42.25, 42.21])
z = np.array([0, 10])
temp = 15 + 8 * np.random.randn(2, 2, 2)
ds = xr.Dataset(
{
"temperature": (["z", "x", "y"], temp),
},
coords={
"lon": (["x"], lon),
"lat": (["y"], lat),
"z": (["z"], z),
},
)
mesh = ds.temperature.pyvista.mesh(x="lon", y="lat", z="z")
mesh.plot()
Raster with rioxarray
import pvxarray
import rioxarray
import xarray as xr
da = rioxarray.open_rasterio("TC_NG_SFBay_US_Geo_COG.tif")
da = da.rio.reproject("EPSG:3857")
# Grab the mesh object for use with PyVista
mesh = da.pyvista.mesh(x="x", y="y", component="band")
mesh.plot(scalars="data", cpos='xy', rgb=True)
import pvxarray
import rioxarray
da = rioxarray.open_rasterio("Elevation.tif")
da = da.rio.reproject("EPSG:3857")
# Grab the mesh object for use with PyVista
mesh = da.pyvista.mesh(x="x", y="y")
# Warp top and plot in 3D
mesh.warp_by_scalar().plot()
StructuredGrid
import pvxarray
import rioxarray
import pyvista as pv
ds = xr.tutorial.open_dataset("ROMS_example.nc", chunks={"ocean_time": 1})
if ds.Vtransform == 1:
Zo_rho = ds.hc * (ds.s_rho - ds.Cs_r) + ds.Cs_r * ds.h
z_rho = Zo_rho + ds.zeta * (1 + Zo_rho / ds.h)
elif ds.Vtransform == 2:
Zo_rho = (ds.hc * ds.s_rho + ds.Cs_r * ds.h) / (ds.hc + ds.h)
z_rho = ds.zeta + (ds.zeta + ds.h) * Zo_rho
ds.coords["z_rho"] = z_rho.transpose() # needing transpose seems to be an xarray bug
da = ds.salt[dict(ocean_time=0)]
# Make array ordering consistent
da = da.transpose("s_rho", "xi_rho", "eta_rho", transpose_coords=False)
# Grab StructuredGrid mesh
mesh = da.pyvista.mesh(x="lon_rho", y="lat_rho", z="z_rho")
# Plot in 3D
p = pv.Plotter()
p.add_mesh(mesh, lighting=False, cmap='plasma', clim=[0, 35])
p.view_vector([1, -1, 1])
p.set_scale(zscale=0.001)
p.show()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyvista-xarray-0.1.0.tar.gz
.
File metadata
- Download URL: pyvista-xarray-0.1.0.tar.gz
- Upload date:
- Size: 919.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3caa8f821c8cb8a7515739e8976122c681df2f69ba354418a318f9511722bd2a |
|
MD5 | bb89fc37e73b69b6451a6b2dc419c2cc |
|
BLAKE2b-256 | f44eb89150719628649cfa9b70133a43b6f3c32fa53fa00d90cb16436a9fd4d4 |
Provenance
File details
Details for the file pyvista_xarray-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: pyvista_xarray-0.1.0-py3-none-any.whl
- Upload date:
- Size: 921.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ee5a8fb9f7eea55ef497bc8443b04ccd8c17569c899f89737d6b3c2c44d87c5 |
|
MD5 | 7ddc3a80720bc121b271e3b83d31a2e8 |
|
BLAKE2b-256 | 67478dd023e53d3513a80a154aeea4f01afb8d992e505ff9511e02be649b7408 |