{"id":30687596,"url":"https://github.com/query-farm/textplot","last_synced_at":"2025-10-08T22:05:19.659Z","repository":{"id":311030844,"uuid":"1039593850","full_name":"Query-farm/textplot","owner":"Query-farm","description":"A DuckDB community extension that enables text-based data visualization directly in SQL queries, including ASCII/Unicode bar charts, density plots, and sparklines for lightweight analytics and dashboards.","archived":false,"fork":false,"pushed_at":"2025-08-21T18:29:56.000Z","size":31,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-21T19:28:20.162Z","etag":null,"topics":["bar-char","density-plots","duckdb","duckdb-extension","progress-bar","sparkline","sparkline-graphs","text-plotting"],"latest_commit_sha":null,"homepage":"http://query.farm/duckdb_extension_textplot.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Query-farm.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-17T15:19:13.000Z","updated_at":"2025-08-21T18:37:17.000Z","dependencies_parsed_at":"2025-08-21T19:31:48.871Z","dependency_job_id":"a03d84c6-d006-447a-858c-b6b5679e88c1","html_url":"https://github.com/Query-farm/textplot","commit_stats":null,"previous_names":["query-farm/textplot"],"tags_count":null,"template":false,"template_full_name":"duckdb/extension-template","purl":"pkg:github/Query-farm/textplot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Query-farm%2Ftextplot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Query-farm%2Ftextplot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Query-farm%2Ftextplot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Query-farm%2Ftextplot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Query-farm","download_url":"https://codeload.github.com/Query-farm/textplot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Query-farm%2Ftextplot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273208777,"owners_count":25064204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bar-char","density-plots","duckdb","duckdb-extension","progress-bar","sparkline","sparkline-graphs","text-plotting"],"created_at":"2025-09-02T00:03:25.792Z","updated_at":"2025-10-08T22:05:19.645Z","avatar_url":"https://github.com/Query-farm.png","language":"C++","readme":"# DuckDB Textplot Extension by [Query.Farm](https://query.farm)\n\nThe **Textplot** extension, developed by **[Query.Farm](https://query.farm)**, brings beautiful text-based data visualization directly to your SQL queries in DuckDB. Create stunning ASCII/Unicode charts, bar graphs, and density plots without leaving your database environment.\n\n## Use Cases\n\nThe Textplot extension is perfect for:\n- **Quick data exploration**: Visualize distributions and trends directly in your terminal\n- **Dashboard creation**: Add visual elements to text-based reports and dashboards\n- **Monitoring and alerting**: Create visual indicators for system metrics and KPIs\n- **Data quality checks**: Spot outliers and patterns in your data instantly\n- **Command-line analytics**: Build beautiful charts for CLI tools and scripts\n- **Documentation**: Include visual data summaries in README files and documentation\n- **Embedded analytics**: Add lightweight visualizations to applications without heavy charting libraries\n\n## Installation\n\n**`textplot` is a [DuckDB Community Extension](https://github.com/duckdb/community-extensions).**\n\nYou can now use this by using this SQL:\n\n```sql\ninstall textplot from community;\nload textplot\n```\n\n## Functions\n\n### `tp_bar(value, ...options)`\nCreates horizontal bar charts with customizable styling and colors.\n\n**Basic Usage:**\n```sql\n-- Simple progress bar (50% filled)\nSELECT tp_bar(0.5);\n┌──────────────────────┐\n│     tp_bar(0.5)      │\n│       varchar        │\n├──────────────────────┤\n│ 🟥🟥🟥🟥🟥⬜⬜⬜⬜⬜ │\n└──────────────────────┘\n\n-- Custom width and range\nSELECT tp_bar(75, min := 0, max := 100, width := 20);\n┌───────────────────────────────────────────────┐\n│ tp_bar(75, min := 0, max := 100, width := 20) │\n│                    varchar                    │\n├───────────────────────────────────────────────┤\n│ 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥⬜⬜⬜⬜⬜      │\n└───────────────────────────────────────────────┘\n```\n\n**Advanced Options:**\n```sql\n-- Custom colors and shapes\nSELECT tp_bar(0.8, shape := 'circle', on_color := 'green', off_color := 'white') as bar;\n┌──────────────────────┐\n│         bar          │\n│       varchar        │\n├──────────────────────┤\n│ 🟢🟢🟢🟢🟢🟢🟢🟢⚪⚪ │\n└──────────────────────┘\n\n-- Threshold-based coloring\nSELECT tp_bar(85,\n    min := 0, max := 100,\n    thresholds := [\n        {'threshold': 90, 'color': 'red'},\n        {'threshold': 70, 'color': 'yellow'},\n        {'threshold': 0, 'color': 'green'}\n    ]\n) as bar;\n┌──────────────────────┐\n│         bar          │\n│       varchar        │\n├──────────────────────┤\n│ 🟨🟨🟨🟨🟨🟨🟨🟨🟨⬜ │\n└──────────────────────┘\n\n-- Custom characters\nSELECT tp_bar(0.7, on := '█', off := '░', width := 15) as bar;\n┌─────────────────┐\n│       bar       │\n│     varchar     │\n├─────────────────┤\n│ ███████████░░░░ │\n└─────────────────┘\n\nSELECT round(n,4),\ntp_bar(n,\nwidth := 14,\nshape := 'circle',\noff_color :='black',\nfilled := false,\nthresholds := [\n  (0.8, 'red'),\n  (0.7, 'orange'),\n  (0.6, 'yellow'),\n  (0.0, 'green')\n]) as bar\nFROM (select random() as n from generate_series(10));\n┌─────────────┬──────────────────────────────┐\n│ round(n, 4) │             bar              │\n│   double    │           varchar            │\n├─────────────┼──────────────────────────────┤\n│      0.9889 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴 │\n│      0.6242 │ ⚫⚫⚫⚫⚫⚫⚫⚫🟡⚫⚫⚫⚫⚫ │\n│      0.6013 │ ⚫⚫⚫⚫⚫⚫⚫🟡⚫⚫⚫⚫⚫⚫ │\n│       0.669 │ ⚫⚫⚫⚫⚫⚫⚫⚫🟡⚫⚫⚫⚫⚫ │\n│      0.8363 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴⚫⚫ │\n│      0.9193 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴⚫ │\n│      0.8629 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴⚫⚫ │\n│      0.8296 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴⚫⚫ │\n│      0.0824 │ 🟢⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n│      0.0281 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n│      0.2682 │ ⚫⚫⚫🟢⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n├─────────────┴──────────────────────────────┤\n│ 11 rows                          2 columns │\n└────────────────────────────────────────────┘\n\nSELECT round(n,4),\ntp_bar(n,\nwidth := 14,\nshape := 'circle',\noff_color :='black',\nfilled := true,\nthresholds := [\n  (0.8, 'red'),\n  (0.7, 'orange'),\n  (0.6, 'yellow'),\n  (0.0, 'green')\n]) as bar\nFROM (select random() as n from generate_series(10));\n┌─────────────┬──────────────────────────────┐\n│ round(n, 4) │             bar              │\n│   double    │           varchar            │\n├─────────────┼──────────────────────────────┤\n│      0.3818 │ 🟢🟢🟢🟢🟢⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n│      0.1919 │ 🟢🟢🟢⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n│      0.5885 │ 🟢🟢🟢🟢🟢🟢🟢🟢⚫⚫⚫⚫⚫⚫ │\n│      0.9558 │ 🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴⚫ │\n│      0.4463 │ 🟢🟢🟢🟢🟢🟢⚫⚫⚫⚫⚫⚫⚫⚫ │\n│      0.6024 │ 🟡🟡🟡🟡🟡🟡🟡🟡⚫⚫⚫⚫⚫⚫ │\n│      0.0114 │ ⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n│      0.4993 │ 🟢🟢🟢🟢🟢🟢🟢⚫⚫⚫⚫⚫⚫⚫ │\n│      0.6884 │ 🟡🟡🟡🟡🟡🟡🟡🟡🟡🟡⚫⚫⚫⚫ │\n│      0.7929 │ 🟠🟠🟠🟠🟠🟠🟠🟠🟠🟠🟠⚫⚫⚫ │\n│      0.3507 │ 🟢🟢🟢🟢🟢⚫⚫⚫⚫⚫⚫⚫⚫⚫ │\n├─────────────┴──────────────────────────────┤\n│ 11 rows                          2 columns │\n└────────────────────────────────────────────┘\n```\n\n**Parameters:**\n- `value`: Numeric value to visualize\n- `min`: Minimum value (default: 0)\n- `max`: Maximum value (default: 1.0)\n- `width`: Bar width in characters (default: 10)\n- `shape`: 'square', 'circle', or 'heart' (default: 'square')\n- `on_color`/`off_color`: Color names (red, green, blue, yellow, etc.)\n- `on`/`off`: Custom characters for filled/empty portions\n- `filled`: Boolean, fill all blocks or just the endpoint (default: true)\n- `thresholds`: List of threshold objects for conditional coloring\n\n### `tp_density(values, ...options)`\nCreates density plots and histograms from arrays of numeric data.\n\n**Basic Usage:**\n```sql\n-- Simple density plot\nSELECT tp_density([1, 2, 3, 4, 5, 4, 3, 2, 1]) as density;\n┌──────────────────────┐\n│       density        │\n│       varchar        │\n├──────────────────────┤\n│ █    █    █    █   ▒ │\n└──────────────────────┘\n\n-- Custom width and style\nSELECT tp_density([1, 2, 3, 2, 1], width := 30, style := 'height') as density;\n┌────────────────────────────────┐\n│            density             │\n│            varchar             │\n├────────────────────────────────┤\n│ █              █             ▄ │\n└────────────────────────────────┘\n```\n\n**Style Options:**\n```sql\n-- ASCII style for compatibility\nSELECT tp_density([1, 5, 3, 8, 2], style := 'ascii') as density;\n┌──────────────────────┐\n│       density        │\n│       varchar        │\n├──────────────────────┤\n│ @ @  @     @       @ │\n└──────────────────────┘\n\n-- Dot style for subtle visualization\nSELECT tp_density([1, 5, 3, 8, 2], style := 'dots') as density;\n┌──────────────────────┐\n│       density        │\n│       varchar        │\n├──────────────────────┤\n│ ● ●  ●     ●       ● │\n└──────────────────────┘\n\n-- Colorful emoji styles\nSELECT tp_density([1, 5, 3, 8, 2], style := 'rainbow_circle') as density;\n┌──────────────────────────────────────────┐\n│                 density                  │\n│                 varchar                  │\n├──────────────────────────────────────────┤\n│ ⚪⚫⚪⚫⚫⚪⚫⚫⚫⚫⚫⚪⚫⚫⚫⚫⚫⚫⚫⚪ │\n└──────────────────────────────────────────┘\n```\n\n**Parameters:**\n- `values`: Array of numeric values\n- `width`: Plot width in characters (default: 20)\n- `style`: Character set style ('shaded', 'ascii', 'dots', 'height', 'circles', 'safety', 'rainbow_circle', 'rainbow_square', 'moon', 'sparse', 'white')\n- `graph_chars`: Custom array of characters for density levels\n- `marker`: Character to highlight specific values\n\n**Available Styles:**\n- `shaded`: ` ░▒▓█` (default)\n- `ascii`: ` .:+#@`\n- `dots`: ` .•●`\n- `height`: ` ▁▂▃▄▅▆▇█`\n- `circles`: `⚫⚪🟡🟠🔴`\n- `rainbow_circle`: `⚫🟤🟣🔵🟢🟡🟠🔴⚪`\n\n### `tp_sparkline(values, ...options)`\nCreates compact sparkline charts perfect for showing trends in time series data and small multiples.\n\n**Basic Usage:**\n```sql\n-- Simple absolute value sparkline\nSELECT tp_sparkline([1, 3, 2, 5, 4, 6, 2, 1]) as sparkline;\n┌──────────────────────┐\n│      sparkline       │\n│       varchar        │\n├──────────────────────┤\n│    ==---##***@@---   │\n└──────────────────────┘\n\n-- Delta mode showing change direction\nSELECT tp_sparkline([100, 105, 102, 108, 95], mode := 'delta') as sparkline;\n┌──────────────────────┐\n│      sparkline       │\n│       varchar        │\n├──────────────────────┤\n│ ↑↑↑↑↑↓↓↓↓↓↑↑↑↑↑↓↓↓↓↓ │\n└──────────────────────┘\n\n-- Trend mode with magnitude\nSELECT tp_sparkline([10, 12, 11, 15, 8], mode := 'trend', theme := 'slopes') as sparkline;\n┌───────────────────────────┐\n│         sparkline         │\n│          varchar          │\n├───────────────────────────┤\n│ /////\\\\\\\\\\/////\\\\\\\\\\\\\\\\\\\\ │\n└───────────────────────────┘\n```\n\n**Visualization Modes:**\n\n**1. Absolute Mode (default)** - Shows actual values as heights:\n```sql\n-- Stock prices over time\nSELECT tp_sparkline([45.2, 47.1, 46.8, 49.3, 52.1, 48.7], width := 20, theme := 'utf8_blocks') as sparkline;\n┌──────────────────────┐\n│      sparkline       │\n│       varchar        │\n├──────────────────────┤\n│     ▂▂▂▂▂▂▅▅▅▅███▄▄▄ │\n└──────────────────────┘\n\n-- System CPU usage\nSELECT tp_sparkline([25, 45, 78, 92, 67, 34], theme := 'ascii_basic', width := 15) as sparkline;\n┌─────────────────┐\n│    sparkline    │\n│     varchar     │\n├─────────────────┤\n│    --###@@***.. │\n└─────────────────┘\n```\n\n**2. Delta Mode** - Shows direction of change (up/same/down):\n```sql\n-- Sales trend directions\nSELECT tp_sparkline([1000, 1200, 1150, 1300, 980], mode := 'delta', theme := 'arrows') as sparkline;\n┌──────────────────────┐\n│      sparkline       │\n│       varchar        │\n├──────────────────────┤\n│ ↑↑↑↑↑↓↓↓↓↓↑↑↑↑↑↓↓↓↓↓ │\n└──────────────────────┘\n\n-- Temperature changes\nSELECT tp_sparkline([72, 75, 75, 78, 71], mode := 'delta', theme := 'faces') as sparkline;\n┌──────────────────────────────────────────┐\n│                sparkline                 │\n│                 varchar                  │\n├──────────────────────────────────────────┤\n│ 😊😊😊😊😊😐😐😐😐😐😊😊😊😊😊😞😞😞😞😞 │\n└──────────────────────────────────────────┘\n```\n\n**3. Trend Mode** - Shows change direction with magnitude:\n```sql\n-- Market volatility\nSELECT tp_sparkline([100, 110, 105, 125, 90], mode := 'trend', theme := 'intensity') as sparkline;\n┌───────────────────────────┐\n│         sparkline         │\n│          varchar          │\n├───────────────────────────┤\n│ +++++-----+++++---------- │\n└───────────────────────────┘\n\n-- Server response times\nSELECT tp_sparkline([150, 145, 147, 180, 120], mode := 'trend', theme := 'arrows') as sparkline;\n┌──────────────────────┐\n│      sparkline       │\n│       varchar        │\n├──────────────────────┤\n│ ↓↓↓↓↓↑↑↑↑↑↑↑↑↑↑⇩⇩⇩⇩⇩ │\n└──────────────────────┘\n\n```\n\n**Available Themes by Mode:**\n\n**Absolute Mode Themes:**\n- `utf8_blocks`: ` ▁▂▃▄▅▆▇█` (default)\n- `ascii_basic`: ` .-=+*#%@`\n- `hearts`: ` 🤍🤎❤️💛💚💙💜🖤`\n- `faces`: ` 😐🙂😊😃😄😁🤩🤯`\n\n**Delta Mode Themes:**\n- `arrows`: `↓→↑` (default)\n- `triangles`: `▼◆▲`\n- `ascii_arrows`: `v-^`\n- `math`: `-=+`\n- `faces`: `😞😐😊`\n- `thumbs`: `👎👍👍`\n- `trends`: `📉➡️📈`\n- `simple`: `\\\\_/`\n\n**Trend Mode Themes:**\n- `arrows`: `⇩↓→↑⇧` (default)\n- `ascii`: `Vv-^A`\n- `slopes`: `\\\\\\\\ \\\\ _ / //`\n- `intensity`: `-- - = + ++`\n- `faces`: `😭😞😐😊🤩`\n- `chart`: `📉📊➡️📊📈`\n\n**Parameters:**\n- `values`: Array of numeric values\n- `mode`: 'absolute', 'delta', or 'trend' (default: 'absolute')\n- `theme`: Theme name (varies by mode, see lists above)\n- `width`: Sparkline width in characters (default: 20)\n\n### `tp_qr(value, ...options)`\nCreates QR codes with customizable error correction levels and display styles.\n\n**Basic Usage:**\n```sql\n.mode ascii\n-- Simple QR code\nSELECT tp_qr('Hello, World!');\nselect  tp_qr('hello world', ecc := 'high');\n⬛⬛⬛⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬜⬜⬜⬛⬜⬛⬛⬛⬛⬛⬛⬛\n⬛⬜⬜⬜⬜⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛\n⬛⬜⬛⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬜⬛⬛⬜⬛⬜⬛⬛⬛⬜⬛\n⬛⬜⬛⬛⬛⬜⬛⬜⬜⬜⬜⬛⬛⬜⬛⬛⬜⬜⬛⬜⬛⬛⬛⬜⬛\n⬛⬜⬛⬛⬛⬜⬛⬜⬜⬛⬜⬜⬜⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛⬜⬛\n⬛⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜⬛⬜⬜⬛⬛⬛⬜⬛⬜⬜⬜⬜⬜⬛\n⬛⬛⬛⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛⬛⬛⬛⬛⬛⬛\n⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜\n⬜⬜⬛⬛⬛⬜⬛⬜⬛⬛⬛⬜⬛⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬛⬛\n⬛⬛⬛⬜⬜⬛⬜⬜⬛⬜⬜⬜⬛⬛⬜⬛⬜⬜⬜⬛⬜⬜⬛⬜⬜\n⬛⬜⬜⬜⬛⬜⬛⬛⬛⬛⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬛⬛⬜⬛⬛\n⬛⬛⬜⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬜⬜⬜⬛⬛\n⬜⬜⬛⬜⬜⬛⬛⬛⬜⬛⬜⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛⬛⬛⬛⬛\n⬛⬜⬛⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬜⬜⬛⬛⬜⬜⬛⬜⬜⬛⬜⬜\n⬛⬜⬜⬜⬜⬜⬛⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬛⬛\n⬛⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬜⬛⬜⬛⬛⬛⬜⬜⬜⬛\n⬛⬜⬛⬜⬜⬛⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜⬛⬛⬛⬛⬛⬛⬛⬜⬜\n⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬛⬜⬛⬜⬜⬜⬛⬜⬛⬜⬜\n⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬛⬜⬛⬜⬛⬛⬛\n⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜⬜⬜⬛⬛⬜⬛⬜\n⬛⬜⬛⬛⬛⬜⬛⬜⬛⬜⬛⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜\n⬛⬜⬛⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬛⬛⬜⬜⬛\n⬛⬜⬛⬛⬛⬜⬛⬜⬛⬛⬜⬛⬛⬛⬛⬛⬜⬜⬛⬛⬜⬛⬜⬜⬛\n⬛⬜⬜⬜⬜⬜⬛⬜⬜⬛⬛⬛⬜⬜⬛⬛⬜⬛⬜⬛⬛⬜⬜⬜⬛\n\n```\n\n**Advanced Options:**\n```sql\n-- Custom colors and shapes\nSELECT tp_qr('https://query.farm', ecc := 'high', \"on\" := '🟡', off := '⚫');\n🟡🟡🟡🟡🟡🟡🟡⚫🟡⚫🟡⚫🟡⚫🟡⚫⚫⚫🟡⚫🟡⚫🟡🟡🟡🟡🟡🟡🟡\n🟡⚫⚫⚫⚫⚫🟡⚫🟡⚫⚫⚫🟡⚫🟡⚫🟡⚫⚫🟡⚫⚫🟡⚫⚫⚫⚫⚫🟡\n🟡⚫🟡🟡🟡⚫🟡⚫🟡🟡🟡🟡🟡🟡⚫🟡🟡⚫⚫🟡🟡⚫🟡⚫🟡🟡🟡⚫🟡\n🟡⚫🟡🟡🟡⚫🟡⚫⚫⚫⚫🟡🟡🟡⚫⚫🟡🟡⚫🟡⚫⚫🟡⚫🟡🟡🟡⚫🟡\n🟡⚫🟡🟡🟡⚫🟡⚫⚫⚫🟡🟡🟡🟡🟡🟡⚫⚫⚫🟡🟡⚫🟡⚫🟡🟡🟡⚫🟡\n🟡⚫⚫⚫⚫⚫🟡⚫🟡⚫⚫🟡⚫⚫🟡⚫🟡⚫🟡⚫🟡⚫🟡⚫⚫⚫⚫⚫🟡\n🟡🟡🟡🟡🟡🟡🟡⚫🟡⚫🟡⚫🟡⚫🟡⚫🟡⚫🟡⚫🟡⚫🟡🟡🟡🟡🟡🟡🟡\n⚫⚫⚫⚫⚫⚫⚫⚫🟡🟡⚫🟡⚫🟡🟡🟡🟡⚫⚫⚫🟡⚫⚫⚫⚫⚫⚫⚫⚫\n⚫⚫🟡🟡🟡⚫🟡⚫🟡🟡🟡🟡⚫⚫🟡🟡🟡⚫🟡⚫🟡🟡🟡🟡⚫⚫🟡🟡🟡\n🟡🟡🟡🟡⚫🟡⚫🟡⚫🟡🟡🟡⚫🟡⚫🟡⚫⚫⚫⚫⚫🟡⚫⚫🟡🟡🟡⚫🟡\n🟡🟡🟡⚫⚫🟡🟡🟡🟡⚫⚫🟡⚫⚫🟡⚫🟡🟡🟡⚫🟡🟡🟡🟡🟡⚫🟡⚫⚫\n🟡⚫⚫⚫⚫⚫⚫⚫🟡🟡⚫🟡⚫🟡⚫⚫⚫⚫⚫⚫⚫🟡🟡🟡⚫🟡⚫🟡⚫\n⚫🟡🟡🟡🟡🟡🟡⚫⚫⚫⚫🟡🟡🟡🟡🟡⚫⚫🟡⚫🟡🟡⚫🟡⚫⚫🟡🟡🟡\n🟡⚫🟡⚫🟡🟡⚫⚫⚫⚫⚫⚫🟡🟡🟡⚫🟡🟡⚫🟡🟡🟡🟡⚫🟡🟡⚫🟡🟡\n⚫⚫⚫🟡⚫⚫🟡⚫🟡🟡⚫🟡🟡⚫⚫⚫🟡⚫⚫⚫🟡⚫🟡🟡⚫⚫⚫🟡⚫\n⚫⚫🟡⚫⚫🟡⚫⚫🟡⚫🟡🟡⚫⚫🟡🟡🟡⚫🟡⚫⚫🟡🟡⚫🟡🟡⚫⚫⚫\n⚫🟡⚫⚫🟡🟡🟡🟡⚫⚫⚫⚫🟡⚫⚫⚫⚫🟡🟡⚫⚫⚫🟡⚫⚫🟡🟡🟡🟡\n🟡🟡🟡⚫⚫🟡⚫🟡🟡⚫🟡⚫⚫⚫🟡🟡⚫🟡⚫⚫🟡🟡⚫🟡🟡🟡⚫🟡🟡\n🟡⚫⚫🟡⚫🟡🟡🟡⚫⚫🟡🟡⚫⚫⚫🟡🟡⚫🟡🟡⚫⚫🟡⚫⚫⚫🟡⚫⚫\n🟡⚫🟡⚫⚫⚫⚫⚫🟡🟡🟡🟡🟡🟡🟡⚫⚫⚫⚫🟡🟡⚫🟡⚫🟡🟡⚫🟡🟡\n🟡⚫🟡🟡⚫🟡🟡⚫⚫⚫🟡⚫🟡🟡⚫⚫⚫⚫⚫🟡🟡🟡🟡🟡🟡⚫🟡🟡⚫\n⚫⚫⚫⚫⚫⚫⚫⚫🟡🟡⚫⚫🟡⚫⚫⚫🟡🟡🟡🟡🟡⚫⚫⚫🟡🟡⚫⚫🟡\n🟡🟡🟡🟡🟡🟡🟡⚫⚫⚫⚫⚫⚫⚫🟡⚫⚫⚫🟡🟡🟡⚫🟡⚫🟡⚫⚫⚫⚫\n🟡⚫⚫⚫⚫⚫🟡⚫⚫🟡⚫⚫🟡⚫🟡🟡🟡🟡⚫🟡🟡⚫⚫⚫🟡🟡⚫🟡🟡\n🟡⚫🟡🟡🟡⚫🟡⚫🟡🟡🟡🟡⚫🟡⚫🟡⚫🟡⚫⚫🟡🟡🟡🟡🟡🟡🟡🟡⚫\n🟡⚫🟡🟡🟡⚫🟡⚫🟡🟡⚫🟡⚫🟡🟡⚫🟡🟡🟡🟡🟡🟡⚫🟡⚫⚫⚫⚫⚫\n🟡⚫🟡🟡🟡⚫🟡⚫🟡🟡⚫⚫⚫⚫🟡🟡⚫⚫⚫🟡🟡🟡🟡🟡🟡🟡⚫🟡⚫\n🟡⚫⚫⚫⚫⚫🟡⚫⚫⚫⚫⚫🟡🟡⚫🟡🟡⚫🟡🟡⚫🟡⚫⚫🟡🟡⚫🟡⚫\n🟡🟡🟡🟡🟡🟡🟡⚫⚫🟡🟡⚫🟡🟡⚫⚫🟡🟡⚫⚫⚫⚫⚫⚫🟡🟡🟡⚫⚫\n\n```\n\n**Parameters:**\n- `value`: String value to encode in the QR code.\n- `ecc`: Error correction level ('low', 'medium', 'quartile', 'high', default: 'low')\n- `on`: Character for filled modules (default: '⬛')\n- `off`: Character for empty modules (default: '⬜')\n\n\n## Tips and Best Practices\n\n1. **Choose appropriate widths**: Longer bars (width 20-30) work well for dashboards, shorter bars (width 10-15) for compact reports\n2. **Use thresholds for status indicators**: Perfect for showing health, performance, or risk levels\n3. **Combine with regular metrics**: Text plots complement, don't replace, numeric values\n4. **Consider your audience**: ASCII styles work everywhere, emoji styles are more visually appealing but require Unicode support\n5. **Leverage density plots for distributions**: Great for showing data patterns, outliers, and distributions\n\n## Contributing\n\nThe Textplot extension is open source and developed by [Query.Farm](https://query.farm). Contributions are welcome!\n\n## License\n\n[MIT License](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquery-farm%2Ftextplot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquery-farm%2Ftextplot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquery-farm%2Ftextplot/lists"}