Skip to main content

An AI-powered data visualization assistant using Plotly

Project description

Plot Agent

Tests PyPI version

An AI-powered data visualization assistant that helps users create Plotly visualizations in Python.

Built on LangGraph with tool-calling to reliably execute generated Plotly code in a sandbox and keep the current fig in sync.

Installation

You can install the package using pip:

pip install plot-agent

Usage

See more examples in /examples/ (via nbviewer so that can see the charts easily).

Here's a simple minimal example of how to use Plot Agent:

import pandas as pd
from plot_agent.agent import PlotAgent

# ensure OPENAI_API_KEY is set (env or .env); optional debug via PLOT_AGENT_DEBUG=1

# Create a sample dataframe
df = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [10, 20, 30, 40, 50]
})

# Initialize the agent
agent = PlotAgent()

# Set the dataframe
agent.set_df(df)

# Process a visualization request
response = agent.process_message("Create a line plot of x vs y")

# Print generated code
print(agent.generated_code)

# Get fig
fig = agent.get_figure()
fig.show()

agent.generated_code:

import pandas as pd
import plotly.graph_objects as go

# Creating a line plot of x vs y
# Create a figure object
fig = go.Figure()

# Add a line trace to the figure
fig.add_trace(
    go.Scatter(
        x=df['x'],  # The x values
        y=df['y'],  # The y values
        mode='lines+markers',  # Display both lines and markers
        name='Line Plot',  # Name of the trace
        line=dict(color='blue', width=2)  # Specify line color and width
    )
)

# Adding titles and labels
fig.update_layout(
    title='Line Plot of x vs y',  # Plot title
    xaxis_title='x',  # x-axis label
    yaxis_title='y',  # y-axis label
    template='plotly_white'  # A clean layout
)

How it works

flowchart TD
    A[User message] --> B{LangGraph ReAct Agent}
    subgraph Tools
      T1[execute_plotly_code<br/>- runs code in sandbox<br/>- returns success/fig/error]
      T2[does_fig_exist]
      T3[view_generated_code]
    end
    B -- tool call --> T1
    T1 -- result --> B
    B -- optional --> T2
    B -- optional --> T3
    B --> C[AI response]
    C --> D{Agent wrapper}
    D -- persist messages --> B
    D -- extract code blocks --> E[Sandbox execution]
    E --> F[fig]
    F --> G[get_figure]
  • The LangGraph agent plans and decides when to call tools.
  • The wrapper persists full graph messages between turns and executes any returned code blocks to keep fig updated.
  • A safe execution environment runs code with an allowlist and a main-thread-only timeout.

Features

  • AI-powered visualization generation
  • Support for various Plotly chart types
  • Automatic data preprocessing
  • Interactive visualization capabilities
  • LangGraph-based tool calling and control flow
  • Debug logging via PlotAgent(debug=True) or PLOT_AGENT_DEBUG=1

Requirements

  • Python 3.8 or higher
  • Dependencies are automatically installed with the package

Development

  • Run unit tests:
make test
  • Execute all example notebooks:
make run-examples
  • Execute with debug logs enabled:
make run-examples-debug
  • Quick CLI repro that prints evolving code each step:
make run-example-script

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plot_agent-0.5.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plot_agent-0.5.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file plot_agent-0.5.0.tar.gz.

File metadata

  • Download URL: plot_agent-0.5.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plot_agent-0.5.0.tar.gz
Algorithm Hash digest
SHA256 b088229c3360b51425adc6f165b673025d267b1124568df7966f68592d96bee0
MD5 5956937a2f8d831388832f501065a29e
BLAKE2b-256 83cce1b1a875869773616e64ab053345553686678a69fb142b7c865cca443bc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for plot_agent-0.5.0.tar.gz:

Publisher: publish.yml on andrewm4894/plot-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plot_agent-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: plot_agent-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plot_agent-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d71f59b246ddd89f949ef1b3ac33e83be6f82d48ce973c8ae46598d378e8857
MD5 1d8cdb46488241c16130f43d3bd1ffd3
BLAKE2b-256 488f9ad84b7f29db9a2fec82475410812e0fbefc266c42075f81358e0d4eceba

See more details on using hashes here.

Provenance

The following attestation bundles were made for plot_agent-0.5.0-py3-none-any.whl:

Publisher: publish.yml on andrewm4894/plot-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page