plotai


Nameplotai JSON
Version 0.0.3 PyPI version JSON
download
home_pagehttps://github.com/mljar/plotai
SummaryCreate plots in Python with AI
upload_time2024-03-18 07:10:00
maintainer
docs_urlNone
authorMLJAR Sp. z o.o.
requires_python>=3.7.1
licenseApache 2.0
keywords plot visualization charts matplotlib llm openai mljar
VCS
bugtrack_url
requirements matplotlib pandas numpy openai python-dotenv
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <img src="https://github.com/mljar/plotai/blob/main/media/PlotAI_logo.png?raw=true" height="270" alt="PlotAI logo"/>
</p>


<p align="center">
  <em>πŸŽ¨πŸ€– Create Python plots in matplotlib with LLM πŸŽ¨πŸ€–</em>
</p>
<p align="center">
  <img alt="" src="https://badge.fury.io/py/plotai.svg"/>
  <img alt="" src="https://img.shields.io/pypi/pyversions/plotai.svg"/>
  <img alt="" src="https://img.shields.io/badge/License-Apache_2.0-blue.svg"/>
</p>

<p align="center">
<a href="https://github.com/mljar/plotai#get-started">πŸš€ Get Started</a>
<span>&nbsp;&nbsp;β€’&nbsp;&nbsp;</span>
<a href="https://github.com/mljar/plotai/issues">🀝 Issues</a>
<span>&nbsp;&nbsp;β€’&nbsp;&nbsp;</span>
<a href="https://twitter.com/MLJAROfficial">🐦 Twitter</a>
<span>&nbsp;&nbsp;β€’&nbsp;&nbsp;</span>
<a href="https://www.linkedin.com/in/aleksandra-p%C5%82o%C5%84ska-42047432/">πŸ‘©β€πŸ’Ό LinkedIn</a>
</p>

# PlotAI πŸŽ¨πŸ€– 

The easiest way to create plots in Python and Matplotlib. The `plotai` is using LLM to generate code and plots.

The idea:
1. User provides input DataFrame and prompt.
2. The `PlotAI` constructs a prompt for LLM, which contains the first 5 rows of DataFrame and the user's prompt and asks for Python code as output.
3. Returned Python code is executed, and the plot is displayed.

https://github.com/mljar/plotai/assets/6959032/cb80bc35-e534-466d-aa1d-ce240d35f624

The simplest possible API for plotting:
```python
# import packages
import pandas as pd
from plotai import PlotAI
# create some data
df = pd.DataFrame({"x":[1,2,3], "y": [4,5,6]})
# do a plot
plot = PlotAI(df)
plot.make("scatter plot")
```

The `PlotAI` class has only one method, `make()`.

It works in Python scripts and in notebooks (Jupyter, Colab, VS Code).


<p align="center">
  <img src="https://github.com/mljar/plotai/blob/main/media/plotai.jpg?raw=true" height="350" alt="PlotAI logo"/>
</p>

## πŸš€ Get started

Install `plotai` package:

```bash
pip install plotai
```

Create `.env` file with the OpenAI API key:

```
OPENAI_API_KEY=your-key-here
```

You can also pass the OpenAI API key in Python:

```python
import os
os.environ["OPENAI_API_KEY"] = "your-key-here"
```

Import `plotai` and make plots:

```python
# import PlotAI
from plotai import PlotAI

# create PlotAI object, pass pandas DataFrame as an argument
plot = PlotAI(df)

# make a plot, just tell what you want
plot.make("make a scatter plot")
```

By default the library will use '*gpt-3.5-turbo*'. You can use different OpenAI models:

```python
# import PlotAI
from plotai import PlotAI

# create PlotAI object, pass pandas DataFrame as an argument
plot = PlotAI(df, model_version="gpt-4")

# make a plot, just tell what you want
plot.make("make a scatter plot")
```

## More examples

#### Analyze the GPD dataset

https://github.com/mljar/plotai/assets/6959032/e62b1a26-7c91-40e4-9d2d-1a600d8dd7ba

#### Analyze the Iris dataset 

![](https://github.com/mljar/plotai/blob/main/media/PlotAI-Iris-demo.png?raw=true)


## πŸ‘©β€πŸ’ΌπŸ¦ Connect with Us on LinkedIn & Twitter

Stay up-to-date with the latest updates about PlotAI πŸŽ¨πŸ€– by following us on Twitter ([MLJAR Twitter](https://twitter.com/MLJAROfficial)) and LinkedIn ([Aleksandra LinkedIn](https://www.linkedin.com/in/aleksandra-p%C5%82o%C5%84ska-42047432/) & [Piotr LinkedIn](https://www.linkedin.com/in/piotr-plonski-mljar/)). We look forward to connecting with you and hearing your thoughts, ideas, and experiences with PlotAI. Let's explore the future of AI together!

## ⚠️ Limitations

PlotAI is in very experimental form, below are some limitations:
- PlotAI is using OpenAI ChatGPT-3.5-turbo for completions, it will be nice to extend to other LLMs.
- PlotAI is sending 5 first rows from your DataFrame to OpenAI ChatGPT. If you have sensitive data, please remove/encode it before passing to `PlotAI`.
- PlotAI is executing Python code returned by LLM, it can be dangerous and unsafe. It would be nice to have the option to accept the response code before execution.


## πŸ›‘ Disclaimer

This project, PlotAI, is provided "as is" without any warranty, express or implied. By using this software, you agree to assume all risks associated with its use, including but not limited to data loss, system failure, or any other issues that may arise. The developers and contributors of this project do not accept any responsibility or liability for any losses, damages, or other consequences that may occur as a result of using this software. 

Please note that the use of the OpenAI language models can be expensive due to its token usage. By utilizing this project, you acknowledge that you are responsible for monitoring and managing your own token usage and the associated costs. It is highly recommended to check your OpenAI API usage regularly and set up any necessary limits or alerts to prevent unexpected charges.
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mljar/plotai",
    "name": "plotai",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7.1",
    "maintainer_email": "",
    "keywords": "plot,visualization,charts,matplotlib,llm,openai,mljar",
    "author": "MLJAR Sp. z o.o.",
    "author_email": "contact@mljar.com",
    "download_url": "https://files.pythonhosted.org/packages/86/1f/542ae456fab4e71d44c13f50ea42c7047621dfd476e92a78daf4ff9ea696/plotai-0.0.3.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n  <img src=\"https://github.com/mljar/plotai/blob/main/media/PlotAI_logo.png?raw=true\" height=\"270\" alt=\"PlotAI logo\"/>\n</p>\n\n\n<p align=\"center\">\n  <em>\ud83c\udfa8\ud83e\udd16 Create Python plots in matplotlib with LLM \ud83c\udfa8\ud83e\udd16</em>\n</p>\n<p align=\"center\">\n  <img alt=\"\" src=\"https://badge.fury.io/py/plotai.svg\"/>\n  <img alt=\"\" src=\"https://img.shields.io/pypi/pyversions/plotai.svg\"/>\n  <img alt=\"\" src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\"/>\n</p>\n\n<p align=\"center\">\n<a href=\"https://github.com/mljar/plotai#get-started\">\ud83d\ude80 Get Started</a>\n<span>&nbsp;&nbsp;\u2022&nbsp;&nbsp;</span>\n<a href=\"https://github.com/mljar/plotai/issues\">\ud83e\udd1d Issues</a>\n<span>&nbsp;&nbsp;\u2022&nbsp;&nbsp;</span>\n<a href=\"https://twitter.com/MLJAROfficial\">\ud83d\udc26 Twitter</a>\n<span>&nbsp;&nbsp;\u2022&nbsp;&nbsp;</span>\n<a href=\"https://www.linkedin.com/in/aleksandra-p%C5%82o%C5%84ska-42047432/\">\ud83d\udc69\u200d\ud83d\udcbc LinkedIn</a>\n</p>\n\n# PlotAI \ud83c\udfa8\ud83e\udd16 \n\nThe easiest way to create plots in Python and Matplotlib. The `plotai` is using LLM to generate code and plots.\n\nThe idea:\n1. User provides input DataFrame and prompt.\n2. The `PlotAI` constructs a prompt for LLM, which contains the first 5 rows of DataFrame and the user's prompt and asks for Python code as output.\n3. Returned Python code is executed, and the plot is displayed.\n\nhttps://github.com/mljar/plotai/assets/6959032/cb80bc35-e534-466d-aa1d-ce240d35f624\n\nThe simplest possible API for plotting:\n```python\n# import packages\nimport pandas as pd\nfrom plotai import PlotAI\n# create some data\ndf = pd.DataFrame({\"x\":[1,2,3], \"y\": [4,5,6]})\n# do a plot\nplot = PlotAI(df)\nplot.make(\"scatter plot\")\n```\n\nThe `PlotAI` class has only one method, `make()`.\n\nIt works in Python scripts and in notebooks (Jupyter, Colab, VS Code).\n\n\n<p align=\"center\">\n  <img src=\"https://github.com/mljar/plotai/blob/main/media/plotai.jpg?raw=true\" height=\"350\" alt=\"PlotAI logo\"/>\n</p>\n\n## \ud83d\ude80 Get started\n\nInstall `plotai` package:\n\n```bash\npip install plotai\n```\n\nCreate `.env` file with the OpenAI API key:\n\n```\nOPENAI_API_KEY=your-key-here\n```\n\nYou can also pass the OpenAI API key in Python:\n\n```python\nimport os\nos.environ[\"OPENAI_API_KEY\"] = \"your-key-here\"\n```\n\nImport `plotai` and make plots:\n\n```python\n# import PlotAI\nfrom plotai import PlotAI\n\n# create PlotAI object, pass pandas DataFrame as an argument\nplot = PlotAI(df)\n\n# make a plot, just tell what you want\nplot.make(\"make a scatter plot\")\n```\n\nBy default the library will use '*gpt-3.5-turbo*'. You can use different OpenAI models:\n\n```python\n# import PlotAI\nfrom plotai import PlotAI\n\n# create PlotAI object, pass pandas DataFrame as an argument\nplot = PlotAI(df, model_version=\"gpt-4\")\n\n# make a plot, just tell what you want\nplot.make(\"make a scatter plot\")\n```\n\n## More examples\n\n#### Analyze the GPD dataset\n\nhttps://github.com/mljar/plotai/assets/6959032/e62b1a26-7c91-40e4-9d2d-1a600d8dd7ba\n\n#### Analyze the Iris dataset \n\n![](https://github.com/mljar/plotai/blob/main/media/PlotAI-Iris-demo.png?raw=true)\n\n\n## \ud83d\udc69\u200d\ud83d\udcbc\ud83d\udc26 Connect with Us on LinkedIn & Twitter\n\nStay up-to-date with the latest updates about PlotAI \ud83c\udfa8\ud83e\udd16 by following us on Twitter ([MLJAR Twitter](https://twitter.com/MLJAROfficial)) and LinkedIn ([Aleksandra LinkedIn](https://www.linkedin.com/in/aleksandra-p%C5%82o%C5%84ska-42047432/) & [Piotr LinkedIn](https://www.linkedin.com/in/piotr-plonski-mljar/)). We look forward to connecting with you and hearing your thoughts, ideas, and experiences with PlotAI. Let's explore the future of AI together!\n\n## \u26a0\ufe0f Limitations\n\nPlotAI is in very experimental form, below are some limitations:\n- PlotAI is using OpenAI ChatGPT-3.5-turbo for completions, it will be nice to extend to other LLMs.\n- PlotAI is sending 5 first rows from your DataFrame to OpenAI ChatGPT. If you have sensitive data, please remove/encode it before passing to `PlotAI`.\n- PlotAI is executing Python code returned by LLM, it can be dangerous and unsafe. It would be nice to have the option to accept the response code before execution.\n\n\n## \ud83d\udee1 Disclaimer\n\nThis project, PlotAI, is provided \"as is\" without any warranty, express or implied. By using this software, you agree to assume all risks associated with its use, including but not limited to data loss, system failure, or any other issues that may arise. The developers and contributors of this project do not accept any responsibility or liability for any losses, damages, or other consequences that may occur as a result of using this software. \n\nPlease note that the use of the OpenAI language models can be expensive due to its token usage. By utilizing this project, you acknowledge that you are responsible for monitoring and managing your own token usage and the associated costs. It is highly recommended to check your OpenAI API usage regularly and set up any necessary limits or alerts to prevent unexpected charges.",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Create plots in Python with AI",
    "version": "0.0.3",
    "project_urls": {
        "Homepage": "https://github.com/mljar/plotai"
    },
    "split_keywords": [
        "plot",
        "visualization",
        "charts",
        "matplotlib",
        "llm",
        "openai",
        "mljar"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "861f542ae456fab4e71d44c13f50ea42c7047621dfd476e92a78daf4ff9ea696",
                "md5": "b7e3d83ee2f9de2320247ce2a30d79b8",
                "sha256": "1ceb5303fc6fd8aabef5cdb7725e3924da7c9448a635e716264fe1d24f0304db"
            },
            "downloads": -1,
            "filename": "plotai-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "b7e3d83ee2f9de2320247ce2a30d79b8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.1",
            "size": 12630,
            "upload_time": "2024-03-18T07:10:00",
            "upload_time_iso_8601": "2024-03-18T07:10:00.959049Z",
            "url": "https://files.pythonhosted.org/packages/86/1f/542ae456fab4e71d44c13f50ea42c7047621dfd476e92a78daf4ff9ea696/plotai-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-18 07:10:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mljar",
    "github_project": "plotai",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "matplotlib",
            "specs": [
                [
                    "~=",
                    "3.8.3"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "~=",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "~=",
                    "1.26.4"
                ]
            ]
        },
        {
            "name": "openai",
            "specs": [
                [
                    "~=",
                    "1.12.0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    "~=",
                    "1.0.1"
                ]
            ]
        }
    ],
    "lcname": "plotai"
}
        
Elapsed time: 0.22016s