Overlay display of 3D data (continuous)#

image
# sphinx_gallery_thumbnail_path = '_static/cigvis/more_demos/030.png'

import numpy as np
import cigvis
from cigvis import colormap
from pathlib import Path

root = Path(__file__).resolve().parent.parent.parent


def show(bg, fg, fx):
    """
    seismic and RGT
    """
    cmap1 = colormap.set_alpha('jet', 0.5)
    nodes1 = cigvis.create_slices(bg, pos=[[36], [28], [84]], cmap='gray')
    nodes1 = cigvis.add_mask(nodes1, fg, cmap=cmap1)
    nodes1 += cigvis.create_colorbar_from_nodes(nodes1,
                                                label_str='RGT',
                                                select='mask')
    """
    Mask the bottom part of the RGT volume (mask fg > 120).
    """
    cmap2 = colormap.set_alpha_except_max('jet', 0.5)
    nodes2 = cigvis.create_slices(bg, pos=[[36], [28], [84]], cmap='gray')
    nodes2 = cigvis.add_mask(nodes2, fg, clim=[fg.min(), 120], cmap=cmap2)
    nodes2 += cigvis.create_colorbar_from_nodes(nodes2,
                                                label_str='RGT',
                                                select='mask')
    """
    seismic and fault
    """
    # Note: set alpha = 1 is the best
    cmap3 = colormap.set_alpha_except_min('jet', 1)
    nodes3 = cigvis.create_slices(bg, pos=[[36], [28], [84]], cmap='gray')
    nodes3 = cigvis.add_mask(nodes3, fg, cmap=cmap2, interpolation='linear')
    nodes3 = cigvis.add_mask(nodes3, fx, cmap=cmap3, interpolation='nearest')

    values = np.unique(fx).astype(int)
    values = values[1:]
    labels = ['fx' + str(i) for i in values]

    # set idx=1, means select the second mask (cmap3 in this case)
    nodes3 += cigvis.create_colorbar_from_nodes(
        nodes3,
        label_str='Fault',
        select='mask',
        idx=1,
        discrete=True,
        disc_ticks=[values, labels],
    )
    """
    seismic, masked RGT (mask fg > 120) and fault
    """
    cmap4_rgt = colormap.set_alpha_except_max('jet', 0.5)
    cmap4_fx = colormap.set_alpha_except_min('jet', 1)
    nodes4 = cigvis.create_slices(bg, pos=[[36], [28], [84]], cmap='gray')
    nodes4 = cigvis.add_mask(
        nodes4,
        fg,
        clim=[fg.min(), 120],
        cmap=cmap4_rgt,
        interpolation='cubic',
    )
    nodes4 = cigvis.add_mask(
        nodes4,
        fx,
        clim=[fx.min(), fx.max()],
        cmap=cmap4_fx,
        interpolation='nearest',
    )

    nodes4 += cigvis.create_colorbar_from_nodes(nodes4,
                                                label_str='RGT',
                                                select='mask')

    cigvis.plot3D([nodes1, nodes2, nodes3, nodes4],
                  view=cigvis.Plot3DView(
                      grid=(2, 2),
                      size=(1000, 700),
                      cbar_region_ratio=0.18,
                      share=True,
                  ),
                  save=cigvis.Plot3DSave(path='example.png'))


if __name__ == '__main__':
    sxp = root / 'data/rgt/sx.dat'
    uxp = root / 'data/rgt/ux.dat'
    fxp = root / 'data/rgt/fx.dat'
    ni, nx, nt = 128, 128, 128

    sx = np.memmap(sxp, np.float32, 'c', shape=(ni, nx, nt))
    fx = np.memmap(fxp, np.float32, 'c', shape=(ni, nx, nt))
    ux = np.memmap(uxp, np.float32, 'c', shape=(ni, nx, nt))

    show(sx, ux, fx)

Gallery generated by Sphinx-Gallery