46573ccc8e
- Implement dibujar.py for drawing functionality with base64 and PIL image rendering. - Create dibujar_retropaint.py for retro painting features using the Paint widget. - Develop draw_data.py to visualize data with Scatter and Bar widgets, including lazy installation of dependencies. - Add layout configuration for graphical representations in layouts/Graficos_plotly.grid.json. - Enhance shell interaction with mejora_shell_mowidget.py, allowing local library imports and script execution. - Introduce primera_prueba_shell_mowidget.py for testing shell commands and user input handling. - Create prueba_de_embeddings.py for embedding visualizations using Sentence Transformers and dimensionality reduction techniques. - Implement pygwalker_visualizaciones.py for interactive data exploration and visualization using Pygwalker. - Add a sample bash script for user input and ping functionality in scripts/mi_script.sh.
131 lines
17 KiB
JSON
131 lines
17 KiB
JSON
{
|
|
"version": "1",
|
|
"metadata": {
|
|
"marimo_version": "0.15.2"
|
|
},
|
|
"cells": [
|
|
{
|
|
"id": "Hbol",
|
|
"code_hash": "1d0db38904205bec4d6f6f6a1f6cec3e",
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/plain": ""
|
|
}
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "MJUe",
|
|
"code_hash": "6e76434bea3e7f9684a45f1946a4f957",
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/plain": ""
|
|
}
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "vblA",
|
|
"code_hash": "33a6366ca80989795e9794e64bbb13ae",
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/html": "<marimo-ui-element object-id='vblA-0' random-id='9ac9f5b6-a6a9-306e-a44a-069ac0e6aa33'><marimo-radio data-initial-value='"Scatter"' data-label='"<span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\">Modo de dibujo</span></span>"' data-options='["Scatter", "Barras"]' data-inline='false' data-disabled='false'></marimo-radio></marimo-ui-element>"
|
|
}
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "bkHC",
|
|
"code_hash": "e5ac1adee529aff3c10486f4b044d3c8",
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/html": "<span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\">Widgets inicializados. Usa el selector para mostrar uno u otro.</span></span>"
|
|
}
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "lEQa",
|
|
"code_hash": "dec81d2a48cd7bb719d6c486a32b69ed",
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/html": "<marimo-ui-element object-id='lEQa-0' random-id='e3a96b2b-fc0f-4574-72e3-dfe94f6627c6'><marimo-anywidget data-initial-value='{"brushsize": 40, "data": [], "height": 500, "width": 800}' data-label='null' data-js-url='"./@file/487028-52958-mGXisH7I.js"' data-js-hash='"ebf5df47eec1161864f68974d25a6460"' data-css='"/* Modern design system with enhanced accessibility and notebook compatibility */\n:root {\n /* Light theme colors with improved contrast ratios */\n --dd-bg-color: #ffffff;\n --dd-text-color: #111827;\n --dd-border-color: #9ca3af; /* Darker border for better visibility */\n --dd-hover-color: #f9fafb;\n --dd-active-color: #f3f4f6;\n --dd-primary-color: #2563eb; /* Darker blue for better contrast */\n --dd-primary-hover: #1d4ed8;\n --dd-svg-bg: #f9fafb;\n --dd-input-bg: #f3f4f6;\n --dd-control-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --dd-shadow-color: rgba(0, 0, 0, 0.1);\n /* More distinct colors for data points */\n --dd-color-a: #1e40af; /* Darker blue */\n --dd-color-b: #b45309; /* Darker amber */\n --dd-color-c: #15803d; /* Darker green */\n --dd-color-d: #b91c1c; /* Darker red */\n /* Count backgrounds with better contrast */\n --dd-count-bg-a: #dbeafe;\n --dd-count-bg-b: #fef3c7;\n --dd-count-bg-c: #dcfce7;\n --dd-count-bg-d: #fee2e2;\n --dd-count-text-a: #1e3a8a;\n --dd-count-text-b: #92400e;\n --dd-count-text-c: #166534;\n --dd-count-text-d: #991b1b;\n --dd-svg-border: 1px solid #9ca3af;\n --dd-svg-border-radius: 0.5rem;\n /* Focus outline */\n --dd-focus-ring: 0 0 0 2px rgba(59, 130, 246, 0.5);\n}\n\n/* Dark mode styles with improved contrast */\n@media (prefers-color-scheme: dark) {\n :root {\n --dd-bg-color: #1f2937;\n --dd-text-color: #f9fafb;\n --dd-border-color: #6b7280; /* Lighter border for better visibility in dark mode */\n --dd-hover-color: #374151;\n --dd-active-color: #4b5563;\n --dd-primary-color: #3b82f6;\n --dd-primary-hover: #60a5fa;\n --dd-svg-bg: #111827;\n --dd-input-bg: #374151;\n --dd-control-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.25);\n --dd-shadow-color: rgba(0, 0, 0, 0.5);\n /* More vibrant colors for dark mode data points */\n --dd-color-a: #3b82f6; /* Brighter blue for dark mode */\n --dd-color-b: #f59e0b; /* Brighter amber */\n --dd-color-c: #10b981; /* Brighter green */\n --dd-color-d: #ef4444; /* Brighter red */\n /* Higher contrast count backgrounds for dark mode */\n --dd-count-bg-a: #1e40af;\n --dd-count-bg-b: #92400e;\n --dd-count-bg-c: #166534;\n --dd-count-bg-d: #991b1b;\n --dd-count-text-a: #dbeafe;\n --dd-count-text-b: #fef3c7;\n --dd-count-text-c: #dcfce7;\n --dd-count-text-d: #fee2e2;\n --dd-svg-border: 1px solid #6b7280;\n --dd-focus-ring: 0 0 0 2px rgba(96, 165, 250, 0.6);\n }\n}\n\n/* Notebook-specific adjustments */\n.jp-OutputArea .dd-scatter-container,\n.jupyter-widgets-output-area .dd-scatter-container,\n.output_subarea .dd-scatter-container {\n background-color: transparent;\n padding: 0.5rem;\n margin: 0;\n}\n\n/* Google Colab specific adjustments */\n.google-colab .dd-scatter-container {\n font-family: 'Roboto', sans-serif;\n}\n\n/* Base container styles */\n.dd-scatter-container {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 0.875rem;\n line-height: 1.25rem;\n width: 100%;\n max-width: 1200px;\n box-sizing: border-box;\n margin: 0 auto;\n padding: 1rem;\n color: var(--dd-text-color);\n background-color: var(--dd-bg-color);\n border-radius: 0.5rem;\n transition: background-color 0.3s ease, color 0.3s ease;\n}\n\n/* Controls layout */\n.dd-scatter-controls {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem;\n margin-bottom: 1rem;\n width: 100%;\n}\n\n/* Fieldset styling */\n.dd-scatter-container fieldset {\n border: 1px solid var(--dd-border-color);\n border-radius: 0.375rem;\n padding: 0.5rem 0.75rem;\n background-color: var(--dd-bg-color);\n box-shadow: var(--dd-control-shadow);\n font-size: 0.875rem;\n margin: 0;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n\n.dd-scatter-container fieldset:hover {\n border-color: var(--dd-primary-hover);\n}\n\n.dd-scatter-container legend {\n font-weight: 600;\n font-size: 0.8125rem;\n color: var(--dd-text-color);\n padding: 0 0.25rem;\n}\n\n/* Button styling */\n.dd-scatter-container .button-group {\n display: flex;\n gap: 0.5rem;\n}\n\n.dd-scatter-container button {\n font-weight: 500;\n font-size: 0.875rem;\n padding: 0.5rem 1rem;\n cursor: pointer;\n border: 1px solid var(--dd-border-color);\n border-radius: 0.375rem;\n background-color: var(--dd-bg-color);\n color: var(--dd-text-color);\n transition: all 0.15s ease;\n box-shadow: var(--dd-control-shadow);\n line-height: 1.25rem;\n margin: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.dd-scatter-container button svg {\n margin-right: 0.25rem;\n background: none;\n border: none;\n box-shadow: none;\n display: inline;\n width: 16px;\n height: 16px;\n}\n\n.dd-scatter-container button:hover {\n background-color: var(--dd-hover-color);\n border-color: var(--dd-primary-color);\n box-shadow: 0 2px 4px var(--dd-shadow-color);\n}\n\n.dd-scatter-container button:focus {\n outline: none;\n box-shadow: var(--dd-focus-ring);\n}\n\n.dd-scatter-container button:active {\n background-color: var(--dd-active-color);\n transform: translateY(1px);\n box-shadow: none;\n}\n\n/* Count labels */\n.dd-scatter-container span.count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem 0.75rem;\n font-size: 0.75rem;\n font-weight: 600;\n border-radius: 9999px;\n margin-right: 0.5rem;\n border: 1px solid transparent;\n transition: all 0.2s ease;\n}\n\n.dd-scatter-container span.count[data-color=\"a\"] {\n background-color: var(--dd-count-bg-a);\n color: var(--dd-count-text-a);\n}\n\n.dd-scatter-container span.count[data-color=\"b\"] {\n background-color: var(--dd-count-bg-b);\n color: var(--dd-count-text-b);\n}\n\n.dd-scatter-container span.count[data-color=\"c\"] {\n background-color: var(--dd-count-bg-c);\n color: var(--dd-count-text-c);\n}\n\n.dd-scatter-container span.count[data-color=\"d\"] {\n background-color: var(--dd-count-bg-d);\n color: var(--dd-count-text-d);\n}\n\n/* Radio button class selector */\n.dd-scatter-container .class-selector {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n}\n\n.dd-scatter-container .brushsize-selector {\n min-width: 200px;\n}\n\n/* Improved radio buttons */\n.dd-scatter-container input[type=\"radio\"] {\n appearance: none;\n -webkit-appearance: none;\n width: 1rem;\n height: 1rem;\n border: 2px solid var(--dd-border-color);\n border-radius: 50%;\n margin-right: 0.25rem;\n position: relative;\n cursor: pointer;\n vertical-align: -0.125em;\n transition: all 0.15s ease;\n}\n\n.dd-scatter-container input[type=\"radio\"]:checked {\n border-color: var(--dd-primary-color);\n background-color: var(--dd-primary-color);\n}\n\n.dd-scatter-container input[type=\"radio\"]:checked::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 0.375rem;\n height: 0.375rem;\n border-radius: 50%;\n background-color: white;\n}\n\n.dd-scatter-container input[type=\"radio\"]:hover {\n border-color: var(--dd-primary-hover);\n}\n\n.dd-scatter-container input[type=\"radio\"]:focus {\n outline: none;\n box-shadow: var(--dd-focus-ring);\n}\n\n.dd-scatter-container .class-selector label {\n margin-right: 0.75rem;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n transition: color 0.15s ease;\n}\n\n.dd-scatter-container .class-selector label:hover {\n color: var(--dd-primary-color);\n}\n\n/* Range slider improvements */\n.dd-scatter-container .brushsize-selector input[type=\"range\"] {\n display: block;\n width: 100%;\n margin: 0.5rem 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n height: 0.25rem;\n background: var(--dd-input-bg);\n border-radius: 9999px;\n outline: none;\n}\n\n.dd-scatter-container .brushsize-selector input[type=\"range\"]::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 1.125rem;\n height: 1.125rem;\n background: var(--dd-primary-color);\n border: 2px solid white;\n border-radius: 50%;\n cursor: pointer;\n box-shadow: 0 1px 3px var(--dd-shadow-color);\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.dd-scatter-container .brushsize-selector input[type=\"range\"]::-moz-range-thumb {\n width: 1.125rem;\n height: 1.125rem;\n background: var(--dd-primary-color);\n border: 2px solid white;\n border-radius: 50%;\n cursor: pointer;\n box-shadow: 0 1px 3px var(--dd-shadow-color);\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.dd-scatter-container .brushsize-selector input[type=\"range\"]::-webkit-slider-thumb:hover,\n.dd-scatter-container .brushsize-selector input[type=\"range\"]::-moz-range-thumb:hover {\n transform: scale(1.15);\n box-shadow: 0 2px 5px var(--dd-shadow-color);\n}\n\n.dd-scatter-container .brushsize-selector input[type=\"range\"]::-webkit-slider-thumb:active,\n.dd-scatter-container .brushsize-selector input[type=\"range\"]::-moz-range-thumb:active {\n transform: scale(0.95);\n}\n\n.dd-scatter-container .brushsize-selector input[type=\"range\"]:focus {\n box-shadow: var(--dd-focus-ring);\n}\n\n/* SVG container and visualization */\n.dd-scatter-container .dd-scatter-svg-container {\n width: 100%;\n box-sizing: border-box;\n margin-top: 0.75rem;\n}\n\n.dd-scatter-container svg {\n display: block;\n cursor: crosshair;\n background: var(--dd-svg-bg);\n width: 100%;\n height: auto;\n max-width: 100%;\n box-sizing: border-box;\n border: var(--dd-svg-border);\n border-radius: var(--dd-svg-border-radius);\n box-shadow: 0 1px 3px var(--dd-shadow-color);\n transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;\n}\n\n.dd-scatter-container svg:hover {\n box-shadow: 0 2px 6px var(--dd-shadow-color);\n}\n\n/* Responsive design improvements */\n@media (max-width: 640px) {\n .dd-scatter-controls {\n flex-direction: column;\n align-items: stretch;\n }\n \n .dd-scatter-container .button-group {\n flex-direction: column;\n }\n \n .dd-scatter-container fieldset {\n width: 100%;\n }\n}\n\n/* High-contrast mode support */\n@media (forced-colors: active) {\n .dd-scatter-container button,\n .dd-scatter-container fieldset,\n .dd-scatter-container svg {\n border: 2px solid CanvasText;\n }\n \n .dd-scatter-container button:focus,\n .dd-scatter-container input:focus {\n outline: 2px solid Highlight;\n }\n}\n\n/* Print styles */\n@media print {\n .dd-scatter-container {\n background-color: white !important;\n color: black !important;\n box-shadow: none !important;\n }\n \n .dd-scatter-container svg {\n background-color: white !important;\n border: 1px solid #ddd !important;\n }\n}"' data-buffer-paths='[]'></marimo-anywidget></marimo-ui-element>"
|
|
}
|
|
}
|
|
],
|
|
"console": [
|
|
{
|
|
"type": "stream",
|
|
"name": "stderr",
|
|
"text": "The truth value of a UIElement is always True. You probably want to call `.value` instead."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "PKri",
|
|
"code_hash": "9e236d272c6d3500bd900ea12f1c7a35",
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/html": "<span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\">Dibuja puntos (Scatter) o columnas (Barras) para ver datos.</span></span>"
|
|
}
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "Xref",
|
|
"code_hash": "34cc9e0a8085a2db22b5f3056af9177b",
|
|
"outputs": [
|
|
{
|
|
"type": "error",
|
|
"ename": "ancestor-stopped",
|
|
"evalue": "This cell wasn't run because an ancestor was stopped with `mo.stop`: ",
|
|
"traceback": []
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "SFPL",
|
|
"code_hash": "158b339695279f227d9a718bd2b4378f",
|
|
"outputs": [
|
|
{
|
|
"type": "error",
|
|
"ename": "ancestor-stopped",
|
|
"evalue": "This cell wasn't run because an ancestor was stopped with `mo.stop`: ",
|
|
"traceback": []
|
|
}
|
|
],
|
|
"console": []
|
|
},
|
|
{
|
|
"id": "BYtC",
|
|
"code_hash": null,
|
|
"outputs": [
|
|
{
|
|
"type": "data",
|
|
"data": {
|
|
"text/plain": ""
|
|
}
|
|
}
|
|
],
|
|
"console": []
|
|
}
|
|
]
|
|
} |