Plot2Code benchmark is now open-sourced at huggingface (ARC Lab) and GitHub. More information can be found in our paper.
This repository contains the code for an evaluation pipeline that generates Python code from reference plots, executes the generated code to draw plots, and then calculates various evaluation metrics to assess the quality of the generated code.
🧐 While MLLMs have demonstrated potential in visual contexts, their capabilities in visual coding tasks have not been thoroughly evaluated. Plot2Code offers a platform for comprehensive assessment of these models.
🤗 To enable individuals to ascertain the proficiency of AI assistants in generating code that renders into plots given reference plots, we initiated the Plot2Code project. This ensures evaluations are pertinent to real-world applications.
💻 Plot2Code accommodates all modalities (text and images) for both input and output, facilitating an exploration of the influence of each modality.
Plot2Code is primarily designed as a benchmark for code generation from scientific plots. Specifically, it supports the following settings:
By employing these settings, we can investigate the impact of each input modality on the quality of the final rendered plots.
You can install the required packages using the following command:
pip install -r requirements.txt
You can use following codes to download the dataset:
git lfs install
mkdir data
cd data
git clone https://huggingface.co/datasets/TencentARC/Plot2Code
export OPENAI_API_KEY=[API_KEY]
export OPENAI_API_BASE=[API_BASE]
# GPT-4V generate code (direct asking)
python -m plot2code.gpt4v_generate_code --prompt_strategy default
# GPT-4V generate code (conditional asking)
python -m plot2code.gpt4v_generate_code --prompt_strategy default --instruct
# GPT-4V generate code (conditional asking with CoT)
python -m plot2code.gpt4v_generate_code --prompt_strategy CoT --instruct
python -m plot2code.execute_generated_code --model_name "$model_name" --prompt_strategy $prompt_strategy
echo "Calculating text match score..."
python -m plot2code.eval.text_match_score --model_name "$model_name" --prompt_strategy $prompt_strategy
echo "Calculating gpt-4v evaluation score..."
python -m plot2code.eval.gpt4v_evaluations_score --model_name "$model_name" --prompt_strategy $prompt_strategy
echo "Combining evaluation results..."
python -m plot2code.eval.combine_evaluation_results --model_name "$model_name" --prompt_strategy $prompt_strategy
See scripts for more details.
In this study, we crawled every website link listed in the Matplotlib gallery and Plotly documentation to collect data for our analysis. Both Matplotlib and Plotly libraries are distributed under permissive open-source licenses. We have taken the following steps to ensure compliance with the respective license terms:
By adhering to these guidelines, we ensure that our use of the Matplotlib and Plotly content is fully compliant with their respective licenses.
This project is open-sourced under the Apache-2.0. These evaluation code and datasets are fully open for academic research and can be used for commercial purposes with official written permission. Check our dataset sheet for more information.
The code and model in this repository is mostly developed for or derived from the paper below. Please cite it if you find the repository helpful.
@misc{wu2024plot2code,
title={Plot2Code: A Comprehensive Benchmark for Evaluating Multi-modal Large Language Models in Code Generation from Scientific Plots},
author={Chengyue Wu and Yixiao Ge and Qiushan Guo and Jiahao Wang and Zhixuan Liang and Zeyu Lu and Ying Shan and Ping Luo},
year={2024},
eprint={2405.07990},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
4 commits
1 commits
Python
95.3%
Shell
4.7%
Plot2Code benchmark is now open-sourced at huggingface (ARC Lab) and GitHub. More information can be found in our paper.
This repository contains the code for an evaluation pipeline that generates Python code from reference plots, executes the generated code to draw plots, and then calculates various evaluation metrics to assess the quality of the generated code.
🧐 While MLLMs have demonstrated potential in visual contexts, their capabilities in visual coding tasks have not been thoroughly evaluated. Plot2Code offers a platform for comprehensive assessment of these models.
🤗 To enable individuals to ascertain the proficiency of AI assistants in generating code that renders into plots given reference plots, we initiated the Plot2Code project. This ensures evaluations are pertinent to real-world applications.
💻 Plot2Code accommodates all modalities (text and images) for both input and output, facilitating an exploration of the influence of each modality.
Plot2Code is primarily designed as a benchmark for code generation from scientific plots. Specifically, it supports the following settings:
By employing these settings, we can investigate the impact of each input modality on the quality of the final rendered plots.
You can install the required packages using the following command:
pip install -r requirements.txt
You can use following codes to download the dataset:
git lfs install
mkdir data
cd data
git clone https://huggingface.co/datasets/TencentARC/Plot2Code
export OPENAI_API_KEY=[API_KEY]
export OPENAI_API_BASE=[API_BASE]
# GPT-4V generate code (direct asking)
python -m plot2code.gpt4v_generate_code --prompt_strategy default
# GPT-4V generate code (conditional asking)
python -m plot2code.gpt4v_generate_code --prompt_strategy default --instruct
# GPT-4V generate code (conditional asking with CoT)
python -m plot2code.gpt4v_generate_code --prompt_strategy CoT --instruct
python -m plot2code.execute_generated_code --model_name "$model_name" --prompt_strategy $prompt_strategy
echo "Calculating text match score..."
python -m plot2code.eval.text_match_score --model_name "$model_name" --prompt_strategy $prompt_strategy
echo "Calculating gpt-4v evaluation score..."
python -m plot2code.eval.gpt4v_evaluations_score --model_name "$model_name" --prompt_strategy $prompt_strategy
echo "Combining evaluation results..."
python -m plot2code.eval.combine_evaluation_results --model_name "$model_name" --prompt_strategy $prompt_strategy
See scripts for more details.
In this study, we crawled every website link listed in the Matplotlib gallery and Plotly documentation to collect data for our analysis. Both Matplotlib and Plotly libraries are distributed under permissive open-source licenses. We have taken the following steps to ensure compliance with the respective license terms:
By adhering to these guidelines, we ensure that our use of the Matplotlib and Plotly content is fully compliant with their respective licenses.
This project is open-sourced under the Apache-2.0. These evaluation code and datasets are fully open for academic research and can be used for commercial purposes with official written permission. Check our dataset sheet for more information.
The code and model in this repository is mostly developed for or derived from the paper below. Please cite it if you find the repository helpful.
@misc{wu2024plot2code,
title={Plot2Code: A Comprehensive Benchmark for Evaluating Multi-modal Large Language Models in Code Generation from Scientific Plots},
author={Chengyue Wu and Yixiao Ge and Qiushan Guo and Jiahao Wang and Zhixuan Liang and Zeyu Lu and Ying Shan and Ping Luo},
year={2024},
eprint={2405.07990},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
4 commits
1 commits
Python
95.3%
Shell
4.7%