source/kotlin_examples/cookbook/image_101.ipynb (3,434 lines of code) (raw):
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## geomImshow()\n",
"\n",
"`geomImshow()` displays an image specified by 2D or 3D array.\n",
"\n",
"Whether the image is grayscale or color depends on the shape of the image array:\n",
"- (M, N) - grey-scale image\n",
"- (M, N, 3) - color RGB image\n",
"- (M, N, 4) - color RGB image with alpha channel\n",
"\n",
"By default, all values in the image array will be transformed to the range [0-255] using a linear scaler."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:14.822625Z",
"iopub.status.busy": "2025-12-03T16:04:14.821132Z",
"iopub.status.idle": "2025-12-03T16:04:16.874486Z",
"shell.execute_reply": "2025-12-03T16:04:16.874132Z"
}
},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"RsMk2r\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"library\">\n",
" if(!window.letsPlotCallQueue) {\n",
" window.letsPlotCallQueue = [];\n",
" }; \n",
" window.letsPlotCall = function(f) {\n",
" window.letsPlotCallQueue.push(f);\n",
" };\n",
" (function() {\n",
" var script = document.createElement(\"script\");\n",
" script.type = \"text/javascript\";\n",
" script.src = \"https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.8.1/js-package/distr/lets-plot.min.js\";\n",
" script.onload = function() {\n",
" window.letsPlotCall = function(f) {f();};\n",
" window.letsPlotCallQueue.forEach(function(f) {f();});\n",
" window.letsPlotCallQueue = [];\n",
" \n",
" \n",
" };\n",
" script.onerror = function(event) {\n",
" window.letsPlotCall = function(f) {};\n",
" window.letsPlotCallQueue = [];\n",
" var div = document.createElement(\"div\");\n",
" div.style.color = 'darkred';\n",
" div.textContent = 'Error loading Lets-Plot JS';\n",
" document.getElementById(\"RsMk2r\").appendChild(div);\n",
" };\n",
" var e = document.getElementById(\"RsMk2r\");\n",
" e.appendChild(script);\n",
" })();\n",
" </script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" <div id=\"kotlin_out_0\"></div>\n",
" <script type=\"text/javascript\">\n",
" if(!window.kotlinQueues) {\n",
" window.kotlinQueues = {};\n",
" }\n",
" if(!window.kotlinQueues[\"letsPlotJs\"]) {\n",
" var resQueue = [];\n",
" window.kotlinQueues[\"letsPlotJs\"] = resQueue;\n",
" window[\"call_letsPlotJs\"] = function(f) {\n",
" resQueue.push(f);\n",
" }\n",
" }\n",
" (function (){\n",
" var modifiers = [(function(script) {\n",
" script.src = \"https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.8.1/js-package/distr/lets-plot.min.js\"\n",
" script.type = \"text/javascript\";\n",
"})];\n",
" var e = document.getElementById(\"kotlin_out_0\");\n",
" modifiers.forEach(function (gen) {\n",
" var script = document.createElement(\"script\");\n",
" gen(script)\n",
" script.addEventListener(\"load\", function() {\n",
" window[\"call_letsPlotJs\"] = function(f) {f();};\n",
" window.kotlinQueues[\"letsPlotJs\"].forEach(function(f) {f();});\n",
" window.kotlinQueues[\"letsPlotJs\"] = [];\n",
" }, false);\n",
" script.addEventListener(\"error\", function() {\n",
" window[\"call_letsPlotJs\"] = function(f) {};\n",
" window.kotlinQueues[\"letsPlotJs\"] = [];\n",
" var div = document.createElement(\"div\");\n",
" div.style.color = 'darkred';\n",
" div.textContent = 'Error loading resource letsPlotJs';\n",
" document.getElementById(\"kotlin_out_0\").appendChild(div);\n",
" }, false);\n",
" \n",
" e.appendChild(script);\n",
" });\n",
" })();\n",
" </script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%useLatestDescriptors\n",
"%use lets-plot"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:16.876892Z",
"iopub.status.busy": "2025-12-03T16:04:16.876436Z",
"iopub.status.idle": "2025-12-03T16:04:16.910760Z",
"shell.execute_reply": "2025-12-03T16:04:16.910561Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Lets-Plot Kotlin API v.4.12.0. Frontend: Notebook with dynamically loaded JS. Lets-Plot JS v.4.8.1.\n",
"Outputs: Web (HTML+JS), Kotlin Notebook (Swing), Static SVG (hidden)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"LetsPlot.getInfo()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Grayscale image\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:16.913216Z",
"iopub.status.busy": "2025-12-03T16:04:16.912654Z",
"iopub.status.idle": "2025-12-03T16:04:17.172398Z",
"shell.execute_reply": "2025-12-03T16:04:17.172278Z"
}
},
"outputs": [
{
"data": {
"text/html": [
" <div id=\"LFMhgx\"></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"library\">\n",
" if(!window.letsPlotCallQueue) {\n",
" window.letsPlotCallQueue = [];\n",
" }; \n",
" window.letsPlotCall = function(f) {\n",
" window.letsPlotCallQueue.push(f);\n",
" };\n",
" (function() {\n",
" var script = document.createElement(\"script\");\n",
" script.type = \"text/javascript\";\n",
" script.src = \"https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.8.1/js-package/distr/lets-plot.min.js\";\n",
" script.onload = function() {\n",
" window.letsPlotCall = function(f) {f();};\n",
" window.letsPlotCallQueue.forEach(function(f) {f();});\n",
" window.letsPlotCallQueue = [];\n",
" \n",
" \n",
" };\n",
" script.onerror = function(event) {\n",
" window.letsPlotCall = function(f) {};\n",
" window.letsPlotCallQueue = [];\n",
" var div = document.createElement(\"div\");\n",
" div.style.color = 'darkred';\n",
" div.textContent = 'Error loading Lets-Plot JS';\n",
" document.getElementById(\"LFMhgx\").appendChild(div);\n",
" };\n",
" var e = document.getElementById(\"LFMhgx\");\n",
" e.appendChild(script);\n",
" })();\n",
" </script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/plot+json": {
"apply_color_scheme": true,
"output": {
"kind": "plot",
"layers": [
{
"color_by": "paint_c",
"geom": "image",
"href": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mNgWPWf4X8oAwAMpgL+0LIbjQAAAABJRU5ErkJggg==",
"inherit_aes": false,
"mapping": {
"paint_c": [
50.0,
200.0
]
},
"stat": "identity",
"xmax": 2.5,
"xmin": -0.5,
"ymax": 1.5,
"ymin": -0.5
}
],
"mapping": {},
"scales": [
{
"aesthetic": "paint_c",
"end": 1.0,
"name": "",
"scale_mapper_kind": "color_grey",
"start": 0.0
}
]
},
"output_type": "lets_plot_spec",
"swing_enabled": true
},
"text/html": [
" <div id=\"ySChJq\" ></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" const forceImmediateRender = false;\n",
" const responsive = false;\n",
" \n",
" let sizing = {\n",
" width_mode: \"MIN\",\n",
" height_mode: \"SCALED\",\n",
" width: null, \n",
" height: null \n",
" };\n",
" \n",
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
" if (preferredWidth !== undefined) {\n",
" sizing = {\n",
" width_mode: 'FIXED',\n",
" height_mode: 'SCALED',\n",
" width: parseFloat(preferredWidth)\n",
" };\n",
" }\n",
" \n",
" const containerDiv = document.getElementById(\"ySChJq\");\n",
" let fig = null;\n",
" \n",
" function renderPlot() {\n",
" if (fig === null) {\n",
" const plotSpec = {\n",
"\"mapping\":{\n",
"},\n",
"\"kind\":\"plot\",\n",
"\"scales\":[{\n",
"\"aesthetic\":\"paint_c\",\n",
"\"scale_mapper_kind\":\"color_grey\",\n",
"\"name\":\"\",\n",
"\"start\":0.0,\n",
"\"end\":1.0\n",
"}],\n",
"\"layers\":[{\n",
"\"ymin\":-0.5,\n",
"\"mapping\":{\n",
"\"paint_c\":\"paint_c\"\n",
"},\n",
"\"stat\":\"identity\",\n",
"\"xmin\":-0.5,\n",
"\"ymax\":1.5,\n",
"\"xmax\":2.5,\n",
"\"color_by\":\"paint_c\",\n",
"\"inherit_aes\":false,\n",
"\"href\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mNgWPWf4X8oAwAMpgL+0LIbjQAAAABJRU5ErkJggg==\",\n",
"\"geom\":\"image\",\n",
"\"data\":{\n",
"\"paint_c\":[50.0,200.0]\n",
"}\n",
"}],\n",
"\"spec_id\":\"1\"\n",
"};\n",
" window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n",
" } else {\n",
" fig.updateView({});\n",
" }\n",
" }\n",
" \n",
" const renderImmediately = \n",
" forceImmediateRender || (\n",
" sizing.width_mode === 'FIXED' && \n",
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
" );\n",
" \n",
" if (renderImmediately) {\n",
" renderPlot();\n",
" }\n",
" \n",
" if (!renderImmediately || responsive) {\n",
" // Set up observer for initial sizing or continuous monitoring\n",
" var observer = new ResizeObserver(function(entries) {\n",
" for (let entry of entries) {\n",
" if (entry.contentBoxSize && \n",
" entry.contentBoxSize[0].inlineSize > 0) {\n",
" if (!responsive && observer) {\n",
" observer.disconnect();\n",
" observer = null;\n",
" }\n",
" renderPlot();\n",
" if (!responsive) {\n",
" break;\n",
" }\n",
" }\n",
" }\n",
" });\n",
" \n",
" observer.observe(containerDiv);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" </script> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=f6760751-2b19-4066-ab20-08b729f7fa4c width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#p0UFr2u .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#p0UFr2u .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p0UFr2u .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p0UFr2u .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"\n",
"}\n",
"#p0UFr2u .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p0UFr2u .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p0UFr2u .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p0UFr2u .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dfnmKrb .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p0UFr2u .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p0UFr2u .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dfnmKrb .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p0UFr2u .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p0UFr2u .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dfnmKrb .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dfnmKrb .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dfnmKrb .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"p0UFr2u\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M0.0 16.64914192329607 L0.0 383.35085807670396 L600.0 383.35085807670396 L600.0 16.64914192329607 Z\">\n",
" </path>\n",
" <g transform=\"translate(21.0 22.64914192329607 ) \">\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"21.866026101368718\" y1=\"0.0\" x2=\"21.866026101368718\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"94.75277977259776\" y1=\"0.0\" x2=\"94.75277977259776\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"167.6395334438268\" y1=\"0.0\" x2=\"167.6395334438268\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"240.52628711505585\" y1=\"0.0\" x2=\"240.52628711505585\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"313.4130407862849\" y1=\"0.0\" x2=\"313.4130407862849\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"386.29979445751394\" y1=\"0.0\" x2=\"386.29979445751394\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"459.18654812874297\" y1=\"0.0\" x2=\"459.18654812874297\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"306.124365419162\" x2=\"481.0525742301117\" y2=\"306.124365419162\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"233.237611747933\" x2=\"481.0525742301117\" y2=\"233.237611747933\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"160.35085807670393\" x2=\"481.0525742301117\" y2=\"160.35085807670393\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"87.46410440547487\" x2=\"481.0525742301117\" y2=\"87.46410440547487\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"14.577350734245812\" x2=\"481.0525742301117\" y2=\"14.577350734245812\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#ciRTw14)\" clip-bounds-jfx=\"[rect (31.015306675749617, 0.0), (481.0525742301117, 320.70171615340786)]\">\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <image preserveAspectRatio=\"none\" x=\"21.866026101368718\" y=\"14.577350734245812\" width=\"437.32052202737424\" height=\"291.54701468491623\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mNgWPWf4X8oAwAMpgL+0LIbjQAAAABJRU5ErkJggg==\" style=\"image-rendering: optimizeSpeed; image-rendering: pixelated\">\n",
" </image>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"ciRTw14\">\n",
" <rect x=\"31.015306675749617\" y=\"0.0\" width=\"481.0525742301117\" height=\"320.70171615340786\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 320.70171615340786 ) \">\n",
" <g transform=\"translate(21.866026101368718 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(94.75277977259776 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(167.6395334438268 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(240.52628711505585 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(313.4130407862849 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(386.29979445751394 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(459.18654812874297 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"481.0525742301117\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g transform=\"translate(0.0 306.124365419162 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 233.237611747933 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 160.35085807670393 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 87.46410440547487 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 14.577350734245812 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(15.0 183.0 ) rotate(-90.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-y\" text-anchor=\"middle\">\n",
" <tspan>y</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(292.54159379080545 377.35085807670396 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-x\" text-anchor=\"middle\">\n",
" <tspan>x</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(536.0678809058613 120.5 ) \">\n",
" <rect x=\"0.0\" y=\"0.0\" height=\"125.0\" width=\"60.932119094138706\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <g transform=\"translate(5.0 5.0 ) \">\n",
" <g transform=\"\">\n",
" <g>\n",
" <rect x=\"0.0\" y=\"0.0\" height=\"115.0\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(248,248,248)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"7.55\" height=\"107.45\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(233,233,233)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"13.1\" height=\"101.9\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(219,219,219)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"18.65\" height=\"96.35\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(205,205,205)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"24.2\" height=\"90.8\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(191,191,191)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"29.75\" height=\"85.25\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(178,178,178)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"35.3\" height=\"79.7\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(164,164,164)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"40.849999999999994\" height=\"74.15\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(151,151,151)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"46.39999999999999\" height=\"68.60000000000001\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(138,138,138)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"51.94999999999999\" height=\"63.05000000000001\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(125,125,125)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"57.499999999999986\" height=\"57.500000000000014\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(113,113,113)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"63.04999999999998\" height=\"51.95000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(100,100,100)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"68.59999999999998\" height=\"46.40000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(88,88,88)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"74.14999999999998\" height=\"40.85000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(76,76,76)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"79.69999999999997\" height=\"35.300000000000026\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(65,65,65)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"85.24999999999997\" height=\"29.75000000000003\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(54,54,54)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"90.79999999999997\" height=\"24.20000000000003\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(43,43,43)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"96.34999999999997\" height=\"18.650000000000034\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(33,33,33)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"101.89999999999996\" height=\"13.100000000000037\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(23,23,23)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"107.44999999999996\" height=\"7.55000000000004\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(9,9,9)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <line x1=\"0.0\" y1=\"113.0\" x2=\"4.0\" y2=\"113.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"113.0\" x2=\"23.0\" y2=\"113.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 117.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>50</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"76.0\" x2=\"4.0\" y2=\"76.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"76.0\" x2=\"23.0\" y2=\"76.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 80.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>100</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"39.0\" x2=\"4.0\" y2=\"39.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"39.0\" x2=\"23.0\" y2=\"39.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 43.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>150</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"2.0\" x2=\"4.0\" y2=\"2.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"2.0\" x2=\"23.0\" y2=\"2.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 6.549999999999999 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>200</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M0.0 16.64914192329607 L0.0 383.35085807670396 L600.0 383.35085807670396 L600.0 16.64914192329607 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dfnmKrb\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"f6760751-2b19-4066-ab20-08b729f7fa4c\").style.display = \"none\";</script>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val A2x3 = RasterData.create(\n",
" listOf(\n",
" listOf(50, 150 ,200),\n",
" listOf(200,100,50)\n",
" )\n",
")\n",
"\n",
"ggplot() + geomImshow(A2x3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Grayscale image without normalization"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:17.174441Z",
"iopub.status.busy": "2025-12-03T16:04:17.174003Z",
"iopub.status.idle": "2025-12-03T16:04:17.220664Z",
"shell.execute_reply": "2025-12-03T16:04:17.220362Z"
}
},
"outputs": [
{
"data": {
"application/plot+json": {
"apply_color_scheme": true,
"output": {
"kind": "plot",
"layers": [
{
"color_by": "paint_c",
"geom": "image",
"href": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mMwmnaC4USKEQAMJALvl3jyVQAAAABJRU5ErkJggg==",
"inherit_aes": false,
"mapping": {
"paint_c": [
50.0,
200.0
]
},
"stat": "identity",
"xmax": 2.5,
"xmin": -0.5,
"ymax": 1.5,
"ymin": -0.5
}
],
"mapping": {},
"scales": [
{
"aesthetic": "paint_c",
"end": 0.7843137254901961,
"name": "",
"scale_mapper_kind": "color_grey",
"start": 0.19607843137254902
}
]
},
"output_type": "lets_plot_spec",
"swing_enabled": true
},
"text/html": [
" <div id=\"cT7iI1\" ></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" const forceImmediateRender = false;\n",
" const responsive = false;\n",
" \n",
" let sizing = {\n",
" width_mode: \"MIN\",\n",
" height_mode: \"SCALED\",\n",
" width: null, \n",
" height: null \n",
" };\n",
" \n",
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
" if (preferredWidth !== undefined) {\n",
" sizing = {\n",
" width_mode: 'FIXED',\n",
" height_mode: 'SCALED',\n",
" width: parseFloat(preferredWidth)\n",
" };\n",
" }\n",
" \n",
" const containerDiv = document.getElementById(\"cT7iI1\");\n",
" let fig = null;\n",
" \n",
" function renderPlot() {\n",
" if (fig === null) {\n",
" const plotSpec = {\n",
"\"mapping\":{\n",
"},\n",
"\"kind\":\"plot\",\n",
"\"scales\":[{\n",
"\"aesthetic\":\"paint_c\",\n",
"\"scale_mapper_kind\":\"color_grey\",\n",
"\"name\":\"\",\n",
"\"start\":0.19607843137254902,\n",
"\"end\":0.7843137254901961\n",
"}],\n",
"\"layers\":[{\n",
"\"ymin\":-0.5,\n",
"\"mapping\":{\n",
"\"paint_c\":\"paint_c\"\n",
"},\n",
"\"stat\":\"identity\",\n",
"\"xmin\":-0.5,\n",
"\"ymax\":1.5,\n",
"\"xmax\":2.5,\n",
"\"color_by\":\"paint_c\",\n",
"\"inherit_aes\":false,\n",
"\"href\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mMwmnaC4USKEQAMJALvl3jyVQAAAABJRU5ErkJggg==\",\n",
"\"geom\":\"image\",\n",
"\"data\":{\n",
"\"paint_c\":[50.0,200.0]\n",
"}\n",
"}],\n",
"\"spec_id\":\"3\"\n",
"};\n",
" window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n",
" } else {\n",
" fig.updateView({});\n",
" }\n",
" }\n",
" \n",
" const renderImmediately = \n",
" forceImmediateRender || (\n",
" sizing.width_mode === 'FIXED' && \n",
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
" );\n",
" \n",
" if (renderImmediately) {\n",
" renderPlot();\n",
" }\n",
" \n",
" if (!renderImmediately || responsive) {\n",
" // Set up observer for initial sizing or continuous monitoring\n",
" var observer = new ResizeObserver(function(entries) {\n",
" for (let entry of entries) {\n",
" if (entry.contentBoxSize && \n",
" entry.contentBoxSize[0].inlineSize > 0) {\n",
" if (!responsive && observer) {\n",
" observer.disconnect();\n",
" observer = null;\n",
" }\n",
" renderPlot();\n",
" if (!responsive) {\n",
" break;\n",
" }\n",
" }\n",
" }\n",
" });\n",
" \n",
" observer.observe(containerDiv);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" </script> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=edb71b9f-da3f-46e7-882b-97900fb17767 width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#p9zJee3 .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#p9zJee3 .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p9zJee3 .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p9zJee3 .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"\n",
"}\n",
"#p9zJee3 .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p9zJee3 .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p9zJee3 .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p9zJee3 .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dYZupVp .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p9zJee3 .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#p9zJee3 .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dYZupVp .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p9zJee3 .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#p9zJee3 .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dYZupVp .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dYZupVp .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dYZupVp .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"p9zJee3\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M0.0 16.64914192329607 L0.0 383.35085807670396 L600.0 383.35085807670396 L600.0 16.64914192329607 Z\">\n",
" </path>\n",
" <g transform=\"translate(21.0 22.64914192329607 ) \">\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"21.866026101368718\" y1=\"0.0\" x2=\"21.866026101368718\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"94.75277977259776\" y1=\"0.0\" x2=\"94.75277977259776\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"167.6395334438268\" y1=\"0.0\" x2=\"167.6395334438268\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"240.52628711505585\" y1=\"0.0\" x2=\"240.52628711505585\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"313.4130407862849\" y1=\"0.0\" x2=\"313.4130407862849\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"386.29979445751394\" y1=\"0.0\" x2=\"386.29979445751394\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"459.18654812874297\" y1=\"0.0\" x2=\"459.18654812874297\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"306.124365419162\" x2=\"481.0525742301117\" y2=\"306.124365419162\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"233.237611747933\" x2=\"481.0525742301117\" y2=\"233.237611747933\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"160.35085807670393\" x2=\"481.0525742301117\" y2=\"160.35085807670393\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"87.46410440547487\" x2=\"481.0525742301117\" y2=\"87.46410440547487\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"14.577350734245812\" x2=\"481.0525742301117\" y2=\"14.577350734245812\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#c95zQkL)\" clip-bounds-jfx=\"[rect (31.015306675749617, 0.0), (481.0525742301117, 320.70171615340786)]\">\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <image preserveAspectRatio=\"none\" x=\"21.866026101368718\" y=\"14.577350734245812\" width=\"437.32052202737424\" height=\"291.54701468491623\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mMwmnaC4USKEQAMJALvl3jyVQAAAABJRU5ErkJggg==\" style=\"image-rendering: optimizeSpeed; image-rendering: pixelated\">\n",
" </image>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"c95zQkL\">\n",
" <rect x=\"31.015306675749617\" y=\"0.0\" width=\"481.0525742301117\" height=\"320.70171615340786\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 320.70171615340786 ) \">\n",
" <g transform=\"translate(21.866026101368718 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(94.75277977259776 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(167.6395334438268 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(240.52628711505585 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(313.4130407862849 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(386.29979445751394 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(459.18654812874297 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"481.0525742301117\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g transform=\"translate(0.0 306.124365419162 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 233.237611747933 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 160.35085807670393 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 87.46410440547487 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 14.577350734245812 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(15.0 183.0 ) rotate(-90.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-y\" text-anchor=\"middle\">\n",
" <tspan>y</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(292.54159379080545 377.35085807670396 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-x\" text-anchor=\"middle\">\n",
" <tspan>x</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(536.0678809058613 120.5 ) \">\n",
" <rect x=\"0.0\" y=\"0.0\" height=\"125.0\" width=\"60.932119094138706\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <g transform=\"translate(5.0 5.0 ) \">\n",
" <g transform=\"\">\n",
" <g>\n",
" <rect x=\"0.0\" y=\"0.0\" height=\"115.0\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(190,190,190)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"7.55\" height=\"107.45\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(182,182,182)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"13.1\" height=\"101.9\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(174,174,174)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"18.65\" height=\"96.35\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(166,166,166)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"24.2\" height=\"90.8\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(158,158,158)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"29.75\" height=\"85.25\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(150,150,150)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"35.3\" height=\"79.7\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(143,143,143)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"40.849999999999994\" height=\"74.15\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(135,135,135)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"46.39999999999999\" height=\"68.60000000000001\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(128,128,128)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"51.94999999999999\" height=\"63.05000000000001\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(120,120,120)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"57.499999999999986\" height=\"57.500000000000014\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(113,113,113)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"63.04999999999998\" height=\"51.95000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(105,105,105)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"68.59999999999998\" height=\"46.40000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(98,98,98)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"74.14999999999998\" height=\"40.85000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(91,91,91)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"79.69999999999997\" height=\"35.300000000000026\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(84,84,84)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"85.24999999999997\" height=\"29.75000000000003\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(77,77,77)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"90.79999999999997\" height=\"24.20000000000003\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(70,70,70)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"96.34999999999997\" height=\"18.650000000000034\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(64,64,64)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"101.89999999999996\" height=\"13.100000000000037\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(57,57,57)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"107.44999999999996\" height=\"7.55000000000004\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(51,51,51)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <line x1=\"0.0\" y1=\"113.0\" x2=\"4.0\" y2=\"113.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"113.0\" x2=\"23.0\" y2=\"113.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 117.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>50</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"76.0\" x2=\"4.0\" y2=\"76.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"76.0\" x2=\"23.0\" y2=\"76.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 80.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>100</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"39.0\" x2=\"4.0\" y2=\"39.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"39.0\" x2=\"23.0\" y2=\"39.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 43.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>150</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"2.0\" x2=\"4.0\" y2=\"2.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"2.0\" x2=\"23.0\" y2=\"2.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 6.549999999999999 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>200</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M0.0 16.64914192329607 L0.0 383.35085807670396 L600.0 383.35085807670396 L600.0 16.64914192329607 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dYZupVp\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"edb71b9f-da3f-46e7-882b-97900fb17767\").style.display = \"none\";</script>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ggplot() + geomImshow(A2x3, norm=false)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### RGB image\n",
"\n",
"M x N x 3 array"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:17.222782Z",
"iopub.status.busy": "2025-12-03T16:04:17.222296Z",
"iopub.status.idle": "2025-12-03T16:04:17.302639Z",
"shell.execute_reply": "2025-12-03T16:04:17.302713Z"
}
},
"outputs": [
{
"data": {
"application/plot+json": {
"apply_color_scheme": true,
"output": {
"kind": "plot",
"layers": [
{
"color_by": "paint_c",
"geom": "image",
"href": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAIAAAASFvFNAAAAEklEQVR42mP4z8DAAMVgCkgAADvYBftImLKDAAAAAElFTkSuQmCC",
"inherit_aes": false,
"mapping": {},
"stat": "identity",
"xmax": 2.5,
"xmin": -0.5,
"ymax": 1.5,
"ymin": -0.5
}
],
"mapping": {},
"scales": []
},
"output_type": "lets_plot_spec",
"swing_enabled": true
},
"text/html": [
" <div id=\"HQ0rzC\" ></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" const forceImmediateRender = false;\n",
" const responsive = false;\n",
" \n",
" let sizing = {\n",
" width_mode: \"MIN\",\n",
" height_mode: \"SCALED\",\n",
" width: null, \n",
" height: null \n",
" };\n",
" \n",
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
" if (preferredWidth !== undefined) {\n",
" sizing = {\n",
" width_mode: 'FIXED',\n",
" height_mode: 'SCALED',\n",
" width: parseFloat(preferredWidth)\n",
" };\n",
" }\n",
" \n",
" const containerDiv = document.getElementById(\"HQ0rzC\");\n",
" let fig = null;\n",
" \n",
" function renderPlot() {\n",
" if (fig === null) {\n",
" const plotSpec = {\n",
"\"mapping\":{\n",
"},\n",
"\"kind\":\"plot\",\n",
"\"scales\":[],\n",
"\"layers\":[{\n",
"\"ymin\":-0.5,\n",
"\"mapping\":{\n",
"},\n",
"\"stat\":\"identity\",\n",
"\"xmin\":-0.5,\n",
"\"ymax\":1.5,\n",
"\"xmax\":2.5,\n",
"\"color_by\":\"paint_c\",\n",
"\"inherit_aes\":false,\n",
"\"href\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAIAAAASFvFNAAAAEklEQVR42mP4z8DAAMVgCkgAADvYBftImLKDAAAAAElFTkSuQmCC\",\n",
"\"geom\":\"image\",\n",
"\"data\":{\n",
"}\n",
"}],\n",
"\"spec_id\":\"5\"\n",
"};\n",
" window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n",
" } else {\n",
" fig.updateView({});\n",
" }\n",
" }\n",
" \n",
" const renderImmediately = \n",
" forceImmediateRender || (\n",
" sizing.width_mode === 'FIXED' && \n",
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
" );\n",
" \n",
" if (renderImmediately) {\n",
" renderPlot();\n",
" }\n",
" \n",
" if (!renderImmediately || responsive) {\n",
" // Set up observer for initial sizing or continuous monitoring\n",
" var observer = new ResizeObserver(function(entries) {\n",
" for (let entry of entries) {\n",
" if (entry.contentBoxSize && \n",
" entry.contentBoxSize[0].inlineSize > 0) {\n",
" if (!responsive && observer) {\n",
" observer.disconnect();\n",
" observer = null;\n",
" }\n",
" renderPlot();\n",
" if (!responsive) {\n",
" break;\n",
" }\n",
" }\n",
" }\n",
" });\n",
" \n",
" observer.observe(containerDiv);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" </script> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=c9865c2a-3f4b-49b0-b160-eb6d7e4fba40 width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#pnwKpM2 .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"\n",
"}\n",
"#pnwKpM2 .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dILno8Y .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dILno8Y .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pnwKpM2 .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dILno8Y .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dILno8Y .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dILno8Y .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"pnwKpM2\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M5.4923466621252715 0.0 L5.4923466621252715 400.0 L594.5076533378747 400.0 L594.5076533378747 0.0 Z\">\n",
" </path>\n",
" <g transform=\"translate(26.49234666212527 6.0 ) \">\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"24.13636363636364\" y1=\"0.0\" x2=\"24.13636363636364\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"104.59090909090908\" y1=\"0.0\" x2=\"104.59090909090908\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"185.0454545454545\" y1=\"0.0\" x2=\"185.0454545454545\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"265.49999999999994\" y1=\"0.0\" x2=\"265.49999999999994\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"345.9545454545454\" y1=\"0.0\" x2=\"345.9545454545454\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"426.4090909090908\" y1=\"0.0\" x2=\"426.4090909090908\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"506.86363636363626\" y1=\"0.0\" x2=\"506.86363636363626\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"337.9090909090909\" x2=\"530.9999999999999\" y2=\"337.9090909090909\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"257.45454545454544\" x2=\"530.9999999999999\" y2=\"257.45454545454544\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"177.0\" x2=\"530.9999999999999\" y2=\"177.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"96.54545454545453\" x2=\"530.9999999999999\" y2=\"96.54545454545453\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"16.090909090909065\" x2=\"530.9999999999999\" y2=\"16.090909090909065\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#cQ38u8F)\" clip-bounds-jfx=\"[rect (31.015306675749617, 0.0), (530.9999999999999, 354.0)]\">\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <image preserveAspectRatio=\"none\" x=\"24.13636363636364\" y=\"16.090909090909065\" width=\"482.72727272727263\" height=\"321.8181818181818\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAIAAAASFvFNAAAAEklEQVR42mP4z8DAAMVgCkgAADvYBftImLKDAAAAAElFTkSuQmCC\" style=\"image-rendering: optimizeSpeed; image-rendering: pixelated\">\n",
" </image>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"cQ38u8F\">\n",
" <rect x=\"31.015306675749617\" y=\"0.0\" width=\"530.9999999999999\" height=\"354.0\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 354.0 ) \">\n",
" <g transform=\"translate(24.13636363636364 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(104.59090909090908 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(185.0454545454545 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(265.49999999999994 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(345.9545454545454 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(426.4090909090908 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(506.86363636363626 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"530.9999999999999\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g transform=\"translate(0.0 337.9090909090909 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 257.45454545454544 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 177.0 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 96.54545454545453 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 16.090909090909065 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(20.49234666212527 183.0 ) rotate(-90.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-y\" text-anchor=\"middle\">\n",
" <tspan>y</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(323.00765333787484 394.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-x\" text-anchor=\"middle\">\n",
" <tspan>x</tspan>\n",
" </text>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M5.4923466621252715 0.0 L5.4923466621252715 400.0 L594.5076533378747 400.0 L594.5076533378747 0.0 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dILno8Y\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"c9865c2a-3f4b-49b0-b160-eb6d7e4fba40\").style.display = \"none\";</script>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val A2x3x3 = RasterData.create(\n",
" listOf(\n",
" listOf(listOf(255, 0, 0), listOf(0, 255, 0), listOf(0, 0, 255)),\n",
" listOf(listOf(0, 255, 0), listOf(0, 0, 255), listOf(255, 0, 0))\n",
" )\n",
")\n",
"\n",
"ggplot() + geomImshow(A2x3x3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### RGB image with alpha channel\n",
"\n",
"M x N x 4 array"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:17.304943Z",
"iopub.status.busy": "2025-12-03T16:04:17.304264Z",
"iopub.status.idle": "2025-12-03T16:04:17.383245Z",
"shell.execute_reply": "2025-12-03T16:04:17.383039Z"
}
},
"outputs": [
{
"data": {
"application/plot+json": {
"apply_color_scheme": true,
"output": {
"kind": "plot",
"layers": [
{
"color_by": "paint_c",
"geom": "image",
"href": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVR42mP4z8DwHwwZ/oOZvkDCF8jyBQCLFgnfxsUWGQAAAABJRU5ErkJggg==",
"inherit_aes": false,
"mapping": {},
"stat": "identity",
"xmax": 2.5,
"xmin": -0.5,
"ymax": 1.5,
"ymin": -0.5
}
],
"mapping": {},
"scales": []
},
"output_type": "lets_plot_spec",
"swing_enabled": true
},
"text/html": [
" <div id=\"1bumOo\" ></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" const forceImmediateRender = false;\n",
" const responsive = false;\n",
" \n",
" let sizing = {\n",
" width_mode: \"MIN\",\n",
" height_mode: \"SCALED\",\n",
" width: null, \n",
" height: null \n",
" };\n",
" \n",
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
" if (preferredWidth !== undefined) {\n",
" sizing = {\n",
" width_mode: 'FIXED',\n",
" height_mode: 'SCALED',\n",
" width: parseFloat(preferredWidth)\n",
" };\n",
" }\n",
" \n",
" const containerDiv = document.getElementById(\"1bumOo\");\n",
" let fig = null;\n",
" \n",
" function renderPlot() {\n",
" if (fig === null) {\n",
" const plotSpec = {\n",
"\"mapping\":{\n",
"},\n",
"\"kind\":\"plot\",\n",
"\"scales\":[],\n",
"\"layers\":[{\n",
"\"ymin\":-0.5,\n",
"\"mapping\":{\n",
"},\n",
"\"stat\":\"identity\",\n",
"\"xmin\":-0.5,\n",
"\"ymax\":1.5,\n",
"\"xmax\":2.5,\n",
"\"color_by\":\"paint_c\",\n",
"\"inherit_aes\":false,\n",
"\"href\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVR42mP4z8DwHwwZ/oOZvkDCF8jyBQCLFgnfxsUWGQAAAABJRU5ErkJggg==\",\n",
"\"geom\":\"image\",\n",
"\"data\":{\n",
"}\n",
"}],\n",
"\"spec_id\":\"7\"\n",
"};\n",
" window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n",
" } else {\n",
" fig.updateView({});\n",
" }\n",
" }\n",
" \n",
" const renderImmediately = \n",
" forceImmediateRender || (\n",
" sizing.width_mode === 'FIXED' && \n",
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
" );\n",
" \n",
" if (renderImmediately) {\n",
" renderPlot();\n",
" }\n",
" \n",
" if (!renderImmediately || responsive) {\n",
" // Set up observer for initial sizing or continuous monitoring\n",
" var observer = new ResizeObserver(function(entries) {\n",
" for (let entry of entries) {\n",
" if (entry.contentBoxSize && \n",
" entry.contentBoxSize[0].inlineSize > 0) {\n",
" if (!responsive && observer) {\n",
" observer.disconnect();\n",
" observer = null;\n",
" }\n",
" renderPlot();\n",
" if (!responsive) {\n",
" break;\n",
" }\n",
" }\n",
" }\n",
" });\n",
" \n",
" observer.observe(containerDiv);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" </script> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=a293247a-e733-418c-bc51-2445215f1463 width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#phNpLTj .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#phNpLTj .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#phNpLTj .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#phNpLTj .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"\n",
"}\n",
"#phNpLTj .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#phNpLTj .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#phNpLTj .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#phNpLTj .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkyuERd .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#phNpLTj .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#phNpLTj .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkyuERd .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#phNpLTj .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#phNpLTj .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkyuERd .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkyuERd .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkyuERd .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"phNpLTj\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M5.4923466621252715 0.0 L5.4923466621252715 400.0 L594.5076533378747 400.0 L594.5076533378747 0.0 Z\">\n",
" </path>\n",
" <g transform=\"translate(26.49234666212527 6.0 ) \">\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"24.13636363636364\" y1=\"0.0\" x2=\"24.13636363636364\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"104.59090909090908\" y1=\"0.0\" x2=\"104.59090909090908\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"185.0454545454545\" y1=\"0.0\" x2=\"185.0454545454545\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"265.49999999999994\" y1=\"0.0\" x2=\"265.49999999999994\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"345.9545454545454\" y1=\"0.0\" x2=\"345.9545454545454\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"426.4090909090908\" y1=\"0.0\" x2=\"426.4090909090908\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"506.86363636363626\" y1=\"0.0\" x2=\"506.86363636363626\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"337.9090909090909\" x2=\"530.9999999999999\" y2=\"337.9090909090909\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"257.45454545454544\" x2=\"530.9999999999999\" y2=\"257.45454545454544\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"177.0\" x2=\"530.9999999999999\" y2=\"177.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"96.54545454545453\" x2=\"530.9999999999999\" y2=\"96.54545454545453\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"16.090909090909065\" x2=\"530.9999999999999\" y2=\"16.090909090909065\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#cPDvlOe)\" clip-bounds-jfx=\"[rect (31.015306675749617, 0.0), (530.9999999999999, 354.0)]\">\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <image preserveAspectRatio=\"none\" x=\"24.13636363636364\" y=\"16.090909090909065\" width=\"482.72727272727263\" height=\"321.8181818181818\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVR42mP4z8DwHwwZ/oOZvkDCF8jyBQCLFgnfxsUWGQAAAABJRU5ErkJggg==\" style=\"image-rendering: optimizeSpeed; image-rendering: pixelated\">\n",
" </image>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"cPDvlOe\">\n",
" <rect x=\"31.015306675749617\" y=\"0.0\" width=\"530.9999999999999\" height=\"354.0\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 354.0 ) \">\n",
" <g transform=\"translate(24.13636363636364 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(104.59090909090908 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(185.0454545454545 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(265.49999999999994 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(345.9545454545454 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(426.4090909090908 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(506.86363636363626 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"530.9999999999999\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g transform=\"translate(0.0 337.9090909090909 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 257.45454545454544 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 177.0 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 96.54545454545453 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 16.090909090909065 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(20.49234666212527 183.0 ) rotate(-90.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-y\" text-anchor=\"middle\">\n",
" <tspan>y</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(323.00765333787484 394.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-x\" text-anchor=\"middle\">\n",
" <tspan>x</tspan>\n",
" </text>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M5.4923466621252715 0.0 L5.4923466621252715 400.0 L594.5076533378747 400.0 L594.5076533378747 0.0 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dkyuERd\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"a293247a-e733-418c-bc51-2445215f1463\").style.display = \"none\";</script>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val A2x3x4 = RasterData.create(\n",
" listOf(\n",
" listOf(\n",
" listOf(1.0, 0.0, 0.0, 1.0), listOf(0.0, 1.0, 0.0, 1.0), listOf(0.0, 0.0, 1.0, 1.0)\n",
" ),\n",
" listOf(\n",
" listOf(0.0, 1.0, 0.0, 0.3), listOf(0.0, 0.0, 1.0, 0.3), listOf(1.0, 0.0, 0.0, 0.3)\n",
" )\n",
" )\n",
")\n",
"\n",
"ggplot() + geomImshow(A2x3x4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Image specified by array"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Grayscale image specified by ByteArray\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:17.385242Z",
"iopub.status.busy": "2025-12-03T16:04:17.384942Z",
"iopub.status.idle": "2025-12-03T16:04:17.447968Z",
"shell.execute_reply": "2025-12-03T16:04:17.448090Z"
}
},
"outputs": [
{
"data": {
"application/plot+json": {
"apply_color_scheme": true,
"output": {
"kind": "plot",
"layers": [
{
"color_by": "paint_c",
"geom": "image",
"href": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mNgWPWf4X8oAwAMpgL+0LIbjQAAAABJRU5ErkJggg==",
"inherit_aes": false,
"mapping": {
"paint_c": [
50.0,
200.0
]
},
"stat": "identity",
"xmax": 2.5,
"xmin": -0.5,
"ymax": 1.5,
"ymin": -0.5
}
],
"mapping": {},
"scales": [
{
"aesthetic": "paint_c",
"end": 1.0,
"name": "",
"scale_mapper_kind": "color_grey",
"start": 0.0
}
]
},
"output_type": "lets_plot_spec",
"swing_enabled": true
},
"text/html": [
" <div id=\"RverBs\" ></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" const forceImmediateRender = false;\n",
" const responsive = false;\n",
" \n",
" let sizing = {\n",
" width_mode: \"MIN\",\n",
" height_mode: \"SCALED\",\n",
" width: null, \n",
" height: null \n",
" };\n",
" \n",
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
" if (preferredWidth !== undefined) {\n",
" sizing = {\n",
" width_mode: 'FIXED',\n",
" height_mode: 'SCALED',\n",
" width: parseFloat(preferredWidth)\n",
" };\n",
" }\n",
" \n",
" const containerDiv = document.getElementById(\"RverBs\");\n",
" let fig = null;\n",
" \n",
" function renderPlot() {\n",
" if (fig === null) {\n",
" const plotSpec = {\n",
"\"mapping\":{\n",
"},\n",
"\"kind\":\"plot\",\n",
"\"scales\":[{\n",
"\"aesthetic\":\"paint_c\",\n",
"\"scale_mapper_kind\":\"color_grey\",\n",
"\"name\":\"\",\n",
"\"start\":0.0,\n",
"\"end\":1.0\n",
"}],\n",
"\"layers\":[{\n",
"\"ymin\":-0.5,\n",
"\"mapping\":{\n",
"\"paint_c\":\"paint_c\"\n",
"},\n",
"\"stat\":\"identity\",\n",
"\"xmin\":-0.5,\n",
"\"ymax\":1.5,\n",
"\"xmax\":2.5,\n",
"\"color_by\":\"paint_c\",\n",
"\"inherit_aes\":false,\n",
"\"href\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mNgWPWf4X8oAwAMpgL+0LIbjQAAAABJRU5ErkJggg==\",\n",
"\"geom\":\"image\",\n",
"\"data\":{\n",
"\"paint_c\":[50.0,200.0]\n",
"}\n",
"}],\n",
"\"spec_id\":\"9\"\n",
"};\n",
" window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n",
" } else {\n",
" fig.updateView({});\n",
" }\n",
" }\n",
" \n",
" const renderImmediately = \n",
" forceImmediateRender || (\n",
" sizing.width_mode === 'FIXED' && \n",
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
" );\n",
" \n",
" if (renderImmediately) {\n",
" renderPlot();\n",
" }\n",
" \n",
" if (!renderImmediately || responsive) {\n",
" // Set up observer for initial sizing or continuous monitoring\n",
" var observer = new ResizeObserver(function(entries) {\n",
" for (let entry of entries) {\n",
" if (entry.contentBoxSize && \n",
" entry.contentBoxSize[0].inlineSize > 0) {\n",
" if (!responsive && observer) {\n",
" observer.disconnect();\n",
" observer = null;\n",
" }\n",
" renderPlot();\n",
" if (!responsive) {\n",
" break;\n",
" }\n",
" }\n",
" }\n",
" });\n",
" \n",
" observer.observe(containerDiv);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" </script> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=dc66abac-46f4-4ef5-ab44-4e3e2f3e6d9e width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#pQ593mC .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#pQ593mC .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pQ593mC .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pQ593mC .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"\n",
"}\n",
"#pQ593mC .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pQ593mC .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pQ593mC .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pQ593mC .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkjKJSA .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pQ593mC .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pQ593mC .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkjKJSA .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pQ593mC .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pQ593mC .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkjKJSA .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkjKJSA .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dkjKJSA .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"pQ593mC\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M0.0 16.64914192329607 L0.0 383.35085807670396 L600.0 383.35085807670396 L600.0 16.64914192329607 Z\">\n",
" </path>\n",
" <g transform=\"translate(21.0 22.64914192329607 ) \">\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"21.866026101368718\" y1=\"0.0\" x2=\"21.866026101368718\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"94.75277977259776\" y1=\"0.0\" x2=\"94.75277977259776\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"167.6395334438268\" y1=\"0.0\" x2=\"167.6395334438268\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"240.52628711505585\" y1=\"0.0\" x2=\"240.52628711505585\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"313.4130407862849\" y1=\"0.0\" x2=\"313.4130407862849\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"386.29979445751394\" y1=\"0.0\" x2=\"386.29979445751394\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"459.18654812874297\" y1=\"0.0\" x2=\"459.18654812874297\" y2=\"320.70171615340786\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"306.124365419162\" x2=\"481.0525742301117\" y2=\"306.124365419162\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"233.237611747933\" x2=\"481.0525742301117\" y2=\"233.237611747933\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"160.35085807670393\" x2=\"481.0525742301117\" y2=\"160.35085807670393\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"87.46410440547487\" x2=\"481.0525742301117\" y2=\"87.46410440547487\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"14.577350734245812\" x2=\"481.0525742301117\" y2=\"14.577350734245812\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#ccTWhVY)\" clip-bounds-jfx=\"[rect (31.015306675749617, 0.0), (481.0525742301117, 320.70171615340786)]\">\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <image preserveAspectRatio=\"none\" x=\"21.866026101368718\" y=\"14.577350734245812\" width=\"437.32052202737424\" height=\"291.54701468491623\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAAAAAC4HznGAAAAEElEQVR42mNgWPWf4X8oAwAMpgL+0LIbjQAAAABJRU5ErkJggg==\" style=\"image-rendering: optimizeSpeed; image-rendering: pixelated\">\n",
" </image>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"ccTWhVY\">\n",
" <rect x=\"31.015306675749617\" y=\"0.0\" width=\"481.0525742301117\" height=\"320.70171615340786\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 320.70171615340786 ) \">\n",
" <g transform=\"translate(21.866026101368718 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(94.75277977259776 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(167.6395334438268 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(240.52628711505585 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(313.4130407862849 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(386.29979445751394 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(459.18654812874297 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"481.0525742301117\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g transform=\"translate(0.0 306.124365419162 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 233.237611747933 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 160.35085807670393 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 87.46410440547487 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 14.577350734245812 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(15.0 183.0 ) rotate(-90.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-y\" text-anchor=\"middle\">\n",
" <tspan>y</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(292.54159379080545 377.35085807670396 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-x\" text-anchor=\"middle\">\n",
" <tspan>x</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(536.0678809058613 120.5 ) \">\n",
" <rect x=\"0.0\" y=\"0.0\" height=\"125.0\" width=\"60.932119094138706\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <g transform=\"translate(5.0 5.0 ) \">\n",
" <g transform=\"\">\n",
" <g>\n",
" <rect x=\"0.0\" y=\"0.0\" height=\"115.0\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(248,248,248)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"7.55\" height=\"107.45\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(233,233,233)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"13.1\" height=\"101.9\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(219,219,219)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"18.65\" height=\"96.35\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(205,205,205)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"24.2\" height=\"90.8\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(191,191,191)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"29.75\" height=\"85.25\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(178,178,178)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"35.3\" height=\"79.7\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(164,164,164)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"40.849999999999994\" height=\"74.15\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(151,151,151)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"46.39999999999999\" height=\"68.60000000000001\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(138,138,138)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"51.94999999999999\" height=\"63.05000000000001\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(125,125,125)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"57.499999999999986\" height=\"57.500000000000014\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(113,113,113)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"63.04999999999998\" height=\"51.95000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(100,100,100)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"68.59999999999998\" height=\"46.40000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(88,88,88)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"74.14999999999998\" height=\"40.85000000000002\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(76,76,76)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"79.69999999999997\" height=\"35.300000000000026\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(65,65,65)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"85.24999999999997\" height=\"29.75000000000003\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(54,54,54)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"90.79999999999997\" height=\"24.20000000000003\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(43,43,43)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"96.34999999999997\" height=\"18.650000000000034\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(33,33,33)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"101.89999999999996\" height=\"13.100000000000037\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(23,23,23)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <rect x=\"0.0\" y=\"107.44999999999996\" height=\"7.55000000000004\" width=\"23.0\" stroke-width=\"0.0\" fill=\"rgb(9,9,9)\" fill-opacity=\"1.0\">\n",
" </rect>\n",
" <line x1=\"0.0\" y1=\"113.0\" x2=\"4.0\" y2=\"113.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"113.0\" x2=\"23.0\" y2=\"113.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 117.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>50</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"76.0\" x2=\"4.0\" y2=\"76.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"76.0\" x2=\"23.0\" y2=\"76.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 80.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>100</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"39.0\" x2=\"4.0\" y2=\"39.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"39.0\" x2=\"23.0\" y2=\"39.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 43.55 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>150</tspan>\n",
" </text>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"2.0\" x2=\"4.0\" y2=\"2.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <line x1=\"19.0\" y1=\"2.0\" x2=\"23.0\" y2=\"2.0\" stroke-width=\"1.0\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" <g transform=\"translate(26.9903027277341 6.549999999999999 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"legend-item\">\n",
" <tspan>200</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M0.0 16.64914192329607 L0.0 383.35085807670396 L600.0 383.35085807670396 L600.0 16.64914192329607 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dkjKJSA\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"dc66abac-46f4-4ef5-ab44-4e3e2f3e6d9e\").style.display = \"none\";</script>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val byteArrayA2x3 = RasterData.create(\n",
" byteArrayOf(50, 150.toByte(), 200.toByte(), 200.toByte(), 100, 50),\n",
" width = 3, height = 2, nChannels = 1\n",
")\n",
"\n",
"ggplot() + geomImshow(byteArrayA2x3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### RGB image with alpha channel specified by IntArray\n",
"Note that pixels are not packed - size of the array have to be equal to `width * height * nChannels`"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2025-12-03T16:04:17.450237Z",
"iopub.status.busy": "2025-12-03T16:04:17.450028Z",
"iopub.status.idle": "2025-12-03T16:04:17.508513Z",
"shell.execute_reply": "2025-12-03T16:04:17.508258Z"
}
},
"outputs": [
{
"data": {
"application/plot+json": {
"apply_color_scheme": true,
"output": {
"kind": "plot",
"layers": [
{
"color_by": "paint_c",
"geom": "image",
"href": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVR42mP4z8DwHwwZ/oOZAUAiAMgKAACLQwno6mpeHAAAAABJRU5ErkJggg==",
"inherit_aes": false,
"mapping": {},
"stat": "identity",
"xmax": 2.5,
"xmin": -0.5,
"ymax": 1.5,
"ymin": -0.5
}
],
"mapping": {},
"scales": []
},
"output_type": "lets_plot_spec",
"swing_enabled": true
},
"text/html": [
" <div id=\"YSMaqp\" ></div>\n",
" <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" const forceImmediateRender = false;\n",
" const responsive = false;\n",
" \n",
" let sizing = {\n",
" width_mode: \"MIN\",\n",
" height_mode: \"SCALED\",\n",
" width: null, \n",
" height: null \n",
" };\n",
" \n",
" const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n",
" if (preferredWidth !== undefined) {\n",
" sizing = {\n",
" width_mode: 'FIXED',\n",
" height_mode: 'SCALED',\n",
" width: parseFloat(preferredWidth)\n",
" };\n",
" }\n",
" \n",
" const containerDiv = document.getElementById(\"YSMaqp\");\n",
" let fig = null;\n",
" \n",
" function renderPlot() {\n",
" if (fig === null) {\n",
" const plotSpec = {\n",
"\"mapping\":{\n",
"},\n",
"\"kind\":\"plot\",\n",
"\"scales\":[],\n",
"\"layers\":[{\n",
"\"ymin\":-0.5,\n",
"\"mapping\":{\n",
"},\n",
"\"stat\":\"identity\",\n",
"\"xmin\":-0.5,\n",
"\"ymax\":1.5,\n",
"\"xmax\":2.5,\n",
"\"color_by\":\"paint_c\",\n",
"\"inherit_aes\":false,\n",
"\"href\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVR42mP4z8DwHwwZ/oOZAUAiAMgKAACLQwno6mpeHAAAAABJRU5ErkJggg==\",\n",
"\"geom\":\"image\",\n",
"\"data\":{\n",
"}\n",
"}],\n",
"\"spec_id\":\"11\"\n",
"};\n",
" window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n",
" } else {\n",
" fig.updateView({});\n",
" }\n",
" }\n",
" \n",
" const renderImmediately = \n",
" forceImmediateRender || (\n",
" sizing.width_mode === 'FIXED' && \n",
" (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n",
" );\n",
" \n",
" if (renderImmediately) {\n",
" renderPlot();\n",
" }\n",
" \n",
" if (!renderImmediately || responsive) {\n",
" // Set up observer for initial sizing or continuous monitoring\n",
" var observer = new ResizeObserver(function(entries) {\n",
" for (let entry of entries) {\n",
" if (entry.contentBoxSize && \n",
" entry.contentBoxSize[0].inlineSize > 0) {\n",
" if (!responsive && observer) {\n",
" observer.disconnect();\n",
" observer = null;\n",
" }\n",
" renderPlot();\n",
" if (!responsive) {\n",
" break;\n",
" }\n",
" }\n",
" }\n",
" });\n",
" \n",
" observer.observe(containerDiv);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" </script> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=79634b36-e6ec-4491-9669-c0a05f8dcb79 width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#pksDsSJ .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#pksDsSJ .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pksDsSJ .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pksDsSJ .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"\n",
"}\n",
"#pksDsSJ .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pksDsSJ .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pksDsSJ .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pksDsSJ .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dr1fVMm .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pksDsSJ .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pksDsSJ .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dr1fVMm .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pksDsSJ .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pksDsSJ .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dr1fVMm .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dr1fVMm .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dr1fVMm .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
"font-style: normal;\n",
"font-family: sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"pksDsSJ\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M5.4923466621252715 0.0 L5.4923466621252715 400.0 L594.5076533378747 400.0 L594.5076533378747 0.0 Z\">\n",
" </path>\n",
" <g transform=\"translate(26.49234666212527 6.0 ) \">\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"24.13636363636364\" y1=\"0.0\" x2=\"24.13636363636364\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"104.59090909090908\" y1=\"0.0\" x2=\"104.59090909090908\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"185.0454545454545\" y1=\"0.0\" x2=\"185.0454545454545\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"265.49999999999994\" y1=\"0.0\" x2=\"265.49999999999994\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"345.9545454545454\" y1=\"0.0\" x2=\"345.9545454545454\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"426.4090909090908\" y1=\"0.0\" x2=\"426.4090909090908\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"506.86363636363626\" y1=\"0.0\" x2=\"506.86363636363626\" y2=\"354.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"337.9090909090909\" x2=\"530.9999999999999\" y2=\"337.9090909090909\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"257.45454545454544\" x2=\"530.9999999999999\" y2=\"257.45454545454544\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"177.0\" x2=\"530.9999999999999\" y2=\"177.0\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"96.54545454545453\" x2=\"530.9999999999999\" y2=\"96.54545454545453\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"16.090909090909065\" x2=\"530.9999999999999\" y2=\"16.090909090909065\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#cGr6Tdn)\" clip-bounds-jfx=\"[rect (31.015306675749617, 0.0), (530.9999999999999, 354.0)]\">\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <image preserveAspectRatio=\"none\" x=\"24.13636363636364\" y=\"16.090909090909065\" width=\"482.72727272727263\" height=\"321.8181818181818\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVR42mP4z8DwHwwZ/oOZAUAiAMgKAACLQwno6mpeHAAAAABJRU5ErkJggg==\" style=\"image-rendering: optimizeSpeed; image-rendering: pixelated\">\n",
" </image>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"cGr6Tdn\">\n",
" <rect x=\"31.015306675749617\" y=\"0.0\" width=\"530.9999999999999\" height=\"354.0\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(31.015306675749617 354.0 ) \">\n",
" <g transform=\"translate(24.13636363636364 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(104.59090909090908 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(185.0454545454545 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(265.49999999999994 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(345.9545454545454 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(426.4090909090908 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(506.86363636363626 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 6.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-x\" text-anchor=\"middle\" dy=\"0.7em\">\n",
" <tspan>2.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"530.9999999999999\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(31.015306675749617 0.0 ) \">\n",
" <g transform=\"translate(0.0 337.9090909090909 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>-0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 257.45454545454544 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 177.0 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 96.54545454545453 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 16.090909090909065 ) \">\n",
" <g transform=\"translate(-2.0 0.0 ) \">\n",
" <text style=\"font-size:13.0px;\" y=\"0.0\" class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>1.5</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(20.49234666212527 183.0 ) rotate(-90.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-y\" text-anchor=\"middle\">\n",
" <tspan>y</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(323.00765333787484 394.0 ) \">\n",
" <text style=\"font-size:15.0px;\" y=\"0.0\" class=\"axis-title-x\" text-anchor=\"middle\">\n",
" <tspan>x</tspan>\n",
" </text>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M5.4923466621252715 0.0 L5.4923466621252715 400.0 L594.5076533378747 400.0 L594.5076533378747 0.0 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dr1fVMm\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"79634b36-e6ec-4491-9669-c0a05f8dcb79\").style.display = \"none\";</script>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"val intArrayA2x3x4 = RasterData.create(\n",
" listOf(\n",
" 255, 0, 0, 255, \n",
" 0, 255, 0, 255, \n",
" 0, 0, 255, 255,\n",
" 0, 255, 0, 80, \n",
" 0, 0, 255, 80, \n",
" 255, 0, 0, 80\n",
" ).toIntArray(),\n",
" width = 3, height = 2, nChannels = 4\n",
")\n",
"\n",
"ggplot() + geomImshow(intArrayA2x3x4)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Kotlin",
"language": "kotlin",
"name": "kotlin"
},
"language_info": {
"codemirror_mode": "text/x-kotlin",
"file_extension": ".kt",
"mimetype": "text/x-kotlin",
"name": "kotlin",
"nbconvert_exporter": "",
"pygments_lexer": "kotlin",
"version": "2.2.20-Beta2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}