{"id":17376038,"url":"https://github.com/bkamapantula/chart-recommender-gui","last_synced_at":"2026-04-25T22:31:18.344Z","repository":{"id":149291374,"uuid":"292484936","full_name":"bkamapantula/chart-recommender-gui","owner":"bkamapantula","description":"A rule-based chart recommendation service. Useful for teams to self-host or as an internal service.","archived":false,"fork":false,"pushed_at":"2020-09-09T08:19:00.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-12T04:09:47.943Z","etag":null,"topics":["data-visualization","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bkamapantula.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-09-03T06:23:01.000Z","updated_at":"2020-09-10T02:59:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"81e3919f-92e4-456c-a34f-2f2084383fba","html_url":"https://github.com/bkamapantula/chart-recommender-gui","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bkamapantula/chart-recommender-gui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkamapantula%2Fchart-recommender-gui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkamapantula%2Fchart-recommender-gui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkamapantula%2Fchart-recommender-gui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkamapantula%2Fchart-recommender-gui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bkamapantula","download_url":"https://codeload.github.com/bkamapantula/chart-recommender-gui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkamapantula%2Fchart-recommender-gui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32279652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["data-visualization","python"],"created_at":"2024-10-16T04:42:43.397Z","updated_at":"2026-04-25T22:31:18.328Z","avatar_url":"https://github.com/bkamapantula.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chart recommender\n\nThis project is adapted from [suggest-chart](https://github.com/tejesh0/suggest-chart/) by [@tejesh0](https://github.com/tejesh0).\n\n## How it works\n\ndata file -\u003e column type detection -\u003e map against rules -\u003e recommend charts\n\n### Rules\n\nRules are configured to work for a combination of numeric and categorical columns. `num` and `cat` refer to numeric and categorical columns, respectively.\n\n\u003cbr\u003eBelow charts are recommended for numeric and categorical columns:\n\n| Combination | Distribution of columns | Uniqueness | Charts |\n| --- | --- | --- | --- |\n| Numeric and Categorical columns | 1 `num`, 1 `cat` | Unique values in categorical column | ['lollipop', 'bar_plot', 'circular_bar_plot', 'treemap', 'circlepack'] |\n| Numeric and Categorical columns | 1 `num`, 1 `cat` | Non-unique values in categorical column | ['boxplot', 'violin_plot'] |\n| Numeric and Categorical columns | \u003e1 `num`, 1 `cat` | Unique values in categorical column | ['multi_line', 'parallel_plot', 'stacked_bar_plot', 'grouped_bar_plot'] |\n| Numeric and Categorical columns | \u003e1 `num`, 1 `cat` | Non-unique values in categorical column | ['grouped_scatterplot'] |\n| Numeric and Categorical columns | 1 `num`, \u003e1 `cat` | Unique values in categorical column | ['multi_line', 'parallel_plot', 'stacked_bar_plot', 'grouped_bar_plot']. \u003cbr\u003e\u003cbr\u003e A variation of this is a nested view with these charts as possibilities: ['lollipop', 'bar_plot', 'circular_bar_plot', 'treemap', 'circlepack'] |\n| Numeric and Categorical columns | 1 `num`, \u003e1 `cat` | Non-unique values in categorical column | ['box_plot', 'violin_plot'] |\n| Numeric and Categorical columns | 1 `num`, \u003e1 `cat` | Non-unique values in categorical column | Using Adjacency as a principle, these are the chart possibilities: ['network', 'sankey', 'chord', 'arc'] |\n\n\u003cbr\u003eBelow charts are recommended for numeric columns alone:\n\n| Combination | Distribution of columns | Uniqueness | Charts |\n| --- | --- | --- | --- |\n| Numeric | 1 `num` | - | ['histogram', 'density_plot'] |\n| Numeric | 2 `num` | Unordered, few data points | ['facet_box_plot', 'scatterplot'] |\n| Numeric | 2 `num` | Unordered, many data points | ['facet_violin_plot', 'facet_density_plot'] |\n| Numeric | 2 `num` | Ordered | ['line_chart', 'area_chart', 'connected_scatterplot'] |\n| Numeric | 3 `num` | Unordered | ['box_plot', 'violin_plot', 'bubble_plot'] |\n| Numeric | 3 `num` | Ordered | ['stacked_area_plot', 'line_graph'] |\n| Numeric | \u003e3 `num` | Unordered | ['box_plot', 'violin_plot', 'heatmap', 'correlogram'] |\n| Numeric | \u003e3 `num` | Ordered | ['stacked_area_plot', 'line_graph'] |\n\n\u003cbr\u003eBelow charts are recommended for numeric columns alone:\n\n| Combination | Distribution of columns | Type | Charts |\n| --- | --- | --- | --- |\n| Categorical | 1 `cat` | - | ['barplot', 'lollipop', 'donut', 'treemap', 'circlepack'] |\n| Categorical | \u003e1 `cat` | Nested | ['sunburst', 'treemap'] |\n| Categorical | \u003e1 `cat` | Subgroup | ['grouped_scatterplot', 'parallel_plot', 'stacked_bar_plot', 'grouped_bar_plot'] |\n| Categorical | \u003e1 `cat` | Adjacency | ['heatmap', 'network', 'sankey'] |\n\n\n\u003cbr\u003eThis work follows a subset of the excellent rule set defined by [from Data to Viz](https://www.data-to-viz.com/).\n\n## Recommended charts\n\nHere is the list of all possible chart recommendations:\n\n- bar chart\n- box plot\n- bubble sort\n- circlepack\n- connected scatterplot\n- correlogram\n- density plot\n- donut\n- facet box plot\n- facet density plot\n- grouped scatterplot\n- heatmap\n- histogram\n- line chart\n- lollipop\n- parallel coordinates\n- network\n- stacked bar chart\n- stacked area chart\n- sankey\n- scatterplot\n- sunburst\n- treemap\n- violin plot\n\n# Usage\n\n## Application setup\n\n- [Install Gramex 1.x](https://learn.gramener.com/guide/install/)\n- Clone this repository\n- From the repo folder, run `gramex setup .`\n- From the repo folder, run `gramex`\n\n## Command-line interface (CLI)\n\nRun `recommend.py`\n\n```bash\npython recommend.py\n```\n\nThis uses `data.xlsx` file and recommends few charts as an output:\n\n```bash\n{'chart_list': ['lollipop', 'bar_plot', 'circular_bar_plot', 'treemap', 'circlepack']}\n```\n\nIt runs `initiate()` function which uses two columns `ID` (categorical column with unique observations/values) and `c1` (numeric column) to recommend charts.\n\n## As a service\n\n```py\nimport recommend\n\nrecommend.initiate('')\n```\n\n# TODO\n\n## CLI tool\n\n- [ ] Accept Google spreadsheet URL as input\n- [ ] Accept local data file as input\n- [ ] Accept a subset of columns\n\n## Standalone tool\n\n- [ ] On running Gramex, provide an option to input a spreadsheet URL\n- [ ] Recommend charts subsequently\n\n## Contributions\n\n- Bhanu Kamapantula \u003cbhanu.kamapantula@gramener.com\u003e\n- Tejesh \u003ctejesh.p@gramener.com\u003e\n- Pragnya Reddy \u003cpragnya.reddy@gramener.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkamapantula%2Fchart-recommender-gui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkamapantula%2Fchart-recommender-gui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkamapantula%2Fchart-recommender-gui/lists"}