{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
\n", "
Title
HSV Element
\n", "
Dependencies
Matplotlib
\n", "
Backends
Matplotlib
Bokeh
\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import holoviews as hv\n", "from holoviews import opts\n", "\n", "hv.extension('matplotlib')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "HSV represents a regularly spaced 2D grid of an underlying continuous space of HSV (hue, saturation and value) color space values. The definition of the grid closely matches the semantics of an ``Image`` or ``RGB`` element and in the simplest case the grid may be specified as a ``NxMx3`` or ``NxMx4`` array of values along with a bounds. An HSV element may also be defined through explicit and regularly spaced x/y-coordinate arrays. The two most basic supported constructors of an HSV element therefore include:\n", "\n", " HSV((X, Y, H, S, V))\n", "\n", "where ``X`` is a 1D array of shape ``M``, ``Y`` is a 1D array of shape ``N`` and ``H``/``S``/``V`` are 2D array of shape ``NxM``, or equivalently:\n", "\n", " HSV(Z, bounds=(x0, y0, x1, y1))\n", "\n", "where ``Z`` is a 3D array of stacked ``H``/``S``/``V`` arrays with shape ``NxMx3/4`` and the bounds define the (left, bottom, right, top) edges of the four corners of the grid. Other gridded formats which support declaring of explicit x/y-coordinate arrays such as xarray are also supported. See the [Gridded Datasets](../../../user_guide/09-Gridded_Datasets.ipynb) user guide for all the other accepted data formats." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", "h = 0.5 + np.sin(0.2*(x**2+y**2)) / 2.0\n", "s = 0.5*np.cos(y*3)+0.5\n", "v = 0.5*np.cos(x*3)+0.5\n", "\n", "hsv = hv.HSV(np.dstack([h, s, v]))\n", "hsv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see how this is created from the original channels:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "opts.defaults(opts.Image(cmap='gray'))\n", "\n", "hsv[..., 'H'].relabel('H') + hsv[..., 'S'].relabel('S') + hsv[..., 'V'].relabel('V')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An ``HSV`` Element can also easily be converted to an ``RGB`` Element using the ``rgb`` property:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(hsv.rgb)\n", "hsv.rgb[..., 'R'] + hsv.rgb[..., 'G'] + hsv.rgb[..., 'B']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For full documentation and the available style and plot options, use ``hv.help(hv.HSV).``" ] } ], "metadata": { "language_info": { "name": "python", "pygments_lexer": "ipython3" } }, "nbformat": 4, "nbformat_minor": 2 }