{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/haichart-human-and-ai-paired-visualization","title":"HAIChart: Human and AI Paired Visualization System","arxiv_id":"2406.11033","date":"2024-06-16","proceeding":null,"authors":["Yupeng Xie","Yuyu Luo","Guoliang Li","Nan Tang"],"abstract":"The growing importance of data visualization in business intelligence and data science emphasizes the need for tools that can efficiently generate meaningful visualizations from large datasets. Existing tools fall into two main categories: human-powered tools (e.g., Tableau and PowerBI), which require intensive expert involvement, and AI-powered automated tools (e.g., Draco and Table2Charts), which often fall short of guessing specific user needs. In this paper, we aim to achieve the best of both worlds. Our key idea is to initially auto-generate a set of high-quality visualizations to minimize manual effort, then refine this process iteratively with user feedback to more closely align with their needs. To this end, we present HAIChart, a reinforcement learning-based framework designed to iteratively recommend good visualizations for a given dataset by incorporating user feedback. Specifically, we propose a Monte Carlo Graph Search-based visualization generation algorithm paired with a composite reward function to efficiently explore the visualization space and automatically generate good visualizations. We devise a visualization hints mechanism to actively incorporate user feedback, thus progressively refining the visualization generation module. We further prove that the top-k visualization hints selection problem is NP-hard and design an efficient algorithm. We conduct both quantitative evaluations and user studies, showing that HAIChart significantly outperforms state-of-the-art human-powered tools (21% better at Recall and 1.8 times faster) and AI-powered automatic tools (25.1% and 14.9% better in terms of Hit@3 and R10@30, respectively).","url_abs":"https://arxiv.org/abs/2406.11033v2","url_pdf":"https://arxiv.org/pdf/2406.11033v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"haichart-human-and-ai-paired-visualization","repo_url":"https://github.com/xypkent/haichart","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"haichart-human-and-ai-paired-visualization","repo_url":"https://github.com/hkustdial/haichart","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"data-visualization","task_name":"Data Visualization"}],"methods":[{"method_slug":"align","method_name":"ALIGN"},{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2406.11033","atlas_url":"https://app.syntology.ai/?focus=2406.11033","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.11033"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xypkent/haichart","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hkustdial/haichart","reach":{"status":"ok"}}],"summary":{"ran":6,"ran_honours":1,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":9,"samples":[{"code_sha256_prefix":"9fbe668f838400e9","entry":"gen_mdp","repo":"hkustdial/haichart","repo_kind":"official","path":"user_model/mdp.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/user_model/mdp.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9fbe668f838400e9"}},{"code_sha256_prefix":"fa676716343cc2ec","entry":"generate_suggestions","repo":"hkustdial/haichart","repo_kind":"official","path":"haichart.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/haichart.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fa676716343cc2ec"}},{"code_sha256_prefix":"cb0724accddcba49","entry":"generate_suggestions_by_hints","repo":"hkustdial/haichart","repo_kind":"official","path":"haichart.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/haichart.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cb0724accddcba49"}},{"code_sha256_prefix":"8c958dd87b768572","entry":"get_prob","repo":"hkustdial/haichart","repo_kind":"official","path":"user_model/mdp.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/user_model/mdp.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8c958dd87b768572"}},{"code_sha256_prefix":"f1cb3493d6243d77","entry":"get_view_score","repo":"hkustdial/haichart","repo_kind":"official","path":"mcgs.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/mcgs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f1cb3493d6243d77"}},{"code_sha256_prefix":"195af2f8d001268d","entry":"load_data","repo":"hkustdial/haichart","repo_kind":"official","path":"user_model/utils.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/user_model/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"195af2f8d001268d"}},{"code_sha256_prefix":"7b399f4df5ddd9b4","entry":"rand_pick","repo":"hkustdial/haichart","repo_kind":"official","path":"user_model/vega_zero_trans.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/user_model/vega_zero_trans.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7b399f4df5ddd9b4"}},{"code_sha256_prefix":"2c4017cf54e9dec0","entry":"formatting_query","repo":"hkustdial/haichart","repo_kind":"official","path":"mcgs.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/mcgs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2c4017cf54e9dec0"}},{"code_sha256_prefix":"840492237306f1e4","entry":"matching_query","repo":"hkustdial/haichart","repo_kind":"official","path":"mcgs.py","file_url":"https://github.com/hkustdial/haichart/blob/HEAD/mcgs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"840492237306f1e4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}