Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
9adbd17
feat(core): implement `AIModelInterface` for unified multi-provider `…
DYung26 Oct 30, 2025
c87f386
feat(utils): add `API` key prompt handling, plot saving, and image en…
DYung26 Oct 30, 2025
e234b23
feat(enums): add `StrategyName` enum with round-robin, cost-optimized…
DYung26 Oct 30, 2025
2e22149
feat(providers): add `AnthropicProvider` for `Claude` model integrati…
DYung26 Oct 30, 2025
4c8046f
feat(providers): add `AzureOpenAIProvider` for `Azure`-hosted `OpenAI…
DYung26 Oct 30, 2025
ea89693
feat(providers): define abstract `LLMProvider` base class with query,…
DYung26 Oct 30, 2025
33bfefa
feat(providers): add `GeminiProvider` for `Google Gemini` models supp…
DYung26 Oct 30, 2025
f0be497
feat(providers): add `GroqProvider` for fast Groq API access with key…
DYung26 Oct 30, 2025
759e940
feat(providers): add `GroqProvider` via `OpenAI`-compatible `SDK` end…
DYung26 Oct 30, 2025
7551be0
feat(providers): add `OllamaProvider` for local `OpenAI`-compatible `…
DYung26 Oct 30, 2025
7df3992
feat(providers): add `OpenAIChatProvider` for `OpenAI Chat` models wi…
DYung26 Oct 30, 2025
79ef600
feat(providers): add `OpenAIResponseProvider` for `OpenAI Responses A…
DYung26 Oct 30, 2025
68dcbe5
feat(providers): add `ProviderManager` to orchestrate multiple `LLM` …
DYung26 Oct 30, 2025
4f60fae
feat(strategies): add `CostOptimizedStrategy` to prioritize cheaper m…
DYung26 Oct 30, 2025
55994cd
feat(strategies): add `FallbackChainStrategy` to try models in fixed …
DYung26 Oct 30, 2025
5887e7e
feat(strategies): add `PerformanceOptimizedStrategy` to prioritize hi…
DYung26 Oct 30, 2025
8a3010c
feat(strategies): add `RoundRobinStrategy` to evenly cycle through al…
DYung26 Oct 30, 2025
72684e5
feat(strategies): define abstract `Strategy` base class for selecting…
DYung26 Oct 30, 2025
5626682
refactor(explanations): rewrite `PlotExplainer` to use `AIModelInterf…
DYung26 Oct 30, 2025
f2fb066
style(init): fix import spacing for consistency and add trailing newl…
DYung26 Oct 30, 2025
2865e1f
build(deps): expand requirements with pinned dependency versions and …
DYung26 Oct 30, 2025
d61be69
chore(egg-info): update plotsense metadata, dependencies, authorship,…
DYung26 Oct 30, 2025
1b87b1f
refactor(explanations): add default values for `PlotExplainer` init p…
DYung26 Oct 31, 2025
0b615cc
feat(plot_generator): add base PlotGenerator class with registry-base…
DYung26 Oct 30, 2025
c8d5ad2
feat(plot_generator): implement BasicPlotGenerator with default matpl…
DYung26 Oct 30, 2025
0915b00
feat(plot_generator): add helper for consistent axis labeling across …
DYung26 Oct 30, 2025
2bdeb3a
feat(plot_generator): implement bar plot creation supporting univaria…
DYung26 Oct 30, 2025
6fe7674
feat(plot_generator): add horizontal bar plot (barh) function with gr…
DYung26 Oct 30, 2025
7f6bae7
feat(plot_generator): implement basic box plot creation for single-va…
DYung26 Oct 30, 2025
a066812
feat(plot_generator): add ECDF plot implementation for distribution v…
DYung26 Oct 30, 2025
8b091c9
feat(plot_generator): implement hexbin plot for bivariate numeric data
DYung26 Oct 30, 2025
25c15e9
feat(plot_generator): add histogram plot generator for univariate fre…
DYung26 Oct 30, 2025
f20ef8a
feat(plot_generator): implement KDE plot for visualizing probability …
DYung26 Oct 30, 2025
421663b
feat(plot_generator): add pie chart creation for categorical data dis…
DYung26 Oct 30, 2025
6e4d6f0
feat(plot_generator): implement basic scatter plot for two-variable r…
DYung26 Oct 30, 2025
c998134
feat(plot_generator): add violin plot for univariate data distributio…
DYung26 Oct 30, 2025
e5c4b07
feat(plot_generator): add smart box plot with NaN handling and bivari…
DYung26 Oct 30, 2025
c10408c
feat(plot_generator): implement enhanced ECDF with group handling and…
DYung26 Oct 30, 2025
91c91be
feat(plot_generator): add advanced histogram with grouping, custom co…
DYung26 Oct 30, 2025
efb225d
feat(plot_generator): implement smart KDE supporting grouped data wit…
DYung26 Oct 30, 2025
029aeed
feat(plot_generator): add scatter plot supporting color/size encoding…
DYung26 Oct 30, 2025
572beea
feat(plot_generator): implement smart violin plot with grouped data a…
DYung26 Oct 30, 2025
d27db7f
chore(plot_generator): add package init file for plot modules
DYung26 Oct 30, 2025
77fba8d
feat(plot_generator): implement registry system for plot type registr…
DYung26 Oct 30, 2025
f2fcaa7
feat(plot_generator): introduce SmartPlotGenerator with advanced plot…
DYung26 Oct 30, 2025
b08da00
refactor(plot_generator): remove deprecated `PlotGenerator` class and…
DYung26 Oct 30, 2025
31e0c35
feat(recommender): add `DataFrameAnalyzer` for detailed dataframe pro…
DYung26 Oct 30, 2025
9305df0
feat(recommender): implement `EnsembleScorer` for weighted model aggr…
DYung26 Oct 30, 2025
a701235
feat(recommender): introduce `PromptBuilder` for structured LLM promp…
DYung26 Oct 30, 2025
acdfa8c
feat(recommender): add `ResponseParser` to convert `LLM` text outputs…
DYung26 Oct 30, 2025
f7f358a
feat(recommender): implement `VisualizationRecommender` for orchestra…
DYung26 Oct 30, 2025
08ebffb
chore(recommender): expose `VisualizationRecommender` in package init…
DYung26 Oct 30, 2025
57a605a
refactor(visual_suggestion): delegate visualization recommendation lo…
DYung26 Oct 30, 2025
4f8676e
feat(plot_chat): add `ActionClient` for handling `AI`-driven plot gen…
DYung26 Oct 30, 2025
0cd2c46
feat(plot_chat): add `AudioClient` for audio transcription and speech…
DYung26 Oct 30, 2025
385587e
feat(plot_chat): implement `ChatClient` to manage chat streaming, plo…
DYung26 Oct 30, 2025
aaaef7e
feat(plot_chat): introduce `PlotChatClient` as unified interface comb…
DYung26 Oct 30, 2025
6b8f611
feat(plot_chat): add `FileClient` for `OpenAI` file upload and deleti…
DYung26 Oct 30, 2025
cc7f56b
feat(plot_chat): implement `FunctionCallClient` to orchestrate multi-…
DYung26 Oct 30, 2025
226ca04
feat(plot_chat): add system and title generation prompts for `PlotCha…
DYung26 Oct 30, 2025
f699b11
feat(plot_chat): add `RealtimeClient` for generating ephemeral realti…
DYung26 Oct 30, 2025
7c1b6f0
feat(plot_chat): implement `ChatStreamWrapper` to handle streaming ev…
DYung26 Oct 30, 2025
3ee7be3
chore(plot_chat): expose `PlotChatClient` in package init for externa…
DYung26 Oct 30, 2025
058499b
refactor(init): update root exports to include `BasicPlotGenerator` a…
DYung26 Oct 30, 2025
62fede2
test(unit): move and update `test_explanations` to unit directory for…
DYung26 Oct 31, 2025
3d80290
test(unit): move and update `test_plotgen` to unit directory for `Bas…
DYung26 Oct 31, 2025
5bbac35
test(unit): move and update `test_suggestions` to unit directory for …
DYung26 Oct 31, 2025
9e4aad0
test(unit): move existing `test_explanations`, `test_plotgen`, and `t…
DYung26 Oct 31, 2025
99e7afe
test(live): add `live_test_explanations` for real `API`-based `explai…
DYung26 Oct 31, 2025
7b7c960
test(live): add `live_test_plotgen` for interactive `plotgen` usage a…
DYung26 Oct 31, 2025
82adffb
test(live): add `live_test_suggestions` for live `recommender` testin…
DYung26 Oct 31, 2025
1353809
refactor(core): unify initialization and testing of `explainer` and `…
DYung26 Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 70 additions & 11 deletions plotsense.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Metadata-Version: 2.4
Name: plotsense
Version: 0.1.0
Version: 0.1.3
Summary: An intelligent plotting package with suggestions and explanations
Author-email: Christian Chimezie <chimeziechristiancc@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/christianchimezie/PlotSenseAI
Home-page: https://github.com/christianchimezie/PlotSenseAI
Author: Christian Chimezie, Toluwaleke Ogidan, Grace Farayola, Amaka Iduwe, Nelson Ogbeide, Onyekachukwu Ojumah, Olamilekan Ajao
Author-email: chimeziechristiancc@gmail.com, gbemilekeogidan@gmail.com, gracefarayola@gmail.com, nwaamaka_iduwe@yahoo.com, Ogbeide331@gmail.com, Onyekaojumah22@gmail.com, olamilekan011@gmail.com
License: Apache License 2.0
Project-URL: Documentation, https://github.com/christianchimezie/PlotSenseAI/blob/main/README.md
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Expand All @@ -21,11 +22,28 @@ Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENCE
License-File: NOTICE
Requires-Dist: matplotlib>=3.0
Requires-Dist: matplotlib>=3.8.0
Requires-Dist: seaborn>=0.11
Requires-Dist: pandas>=1.0
Requires-Dist: numpy>=1.18
Requires-Dist: python-dotenv
Requires-Dist: groq
Requires-Dist: anthropic
Requires-Dist: openai
Requires-Dist: google-genai
Requires-Dist: requests
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# 🌟 PlotSense: AI-Powered Data Visualization Assistant

Expand All @@ -51,7 +69,7 @@ pip install plotsense

```bash
import plotsense as ps
from plotsense import recommender, generate_plot, explainer,
from plotsense import recommender, plotgen, explainer
```
### 🔐 Authenticate with Groq API:
Get your free API key from Groq Cloud https://console.groq.com/home
Expand Down Expand Up @@ -82,15 +100,38 @@ print(suggestions)
```
### 📊 Sample Output:

![alt text](suggestions_table.png)
![alt text](image.png)

🎛️ Want more suggestions?

``` bash
suggestions = ps.recommender(df, n=10)
```

### 🧾 2. AI-Powered Plot Explanation
### 📈 2. One-Click Plot Generation
Generate recommended charts instantly:

```bash
plot1 = ps.plotgen(df, suggestions.iloc[0]) # This will plot a bar chart with variables 'survived', 'pclass'
plot2 = ps.plotgen(df, suggestions.iloc[1]) # This will plot a bar chart with variables 'survived', 'sex'
plot3 = ps.plotgen(df, suggestions.iloc[2]) # This will plot a histogram with variable 'age'
```
🎛️ Want more control?

``` bash
plot1 = ps.plotgen(df, suggestions.iloc[0], x='pclass', y='survived')
```
Supported Plots
- scatter
- bar
- barh
- histogram
- boxplot
- violinplot
- pie
- hexbin

### 🧾 3. AI-Powered Plot Explanation
Turn your visualizations into stories with natural language insights:

``` bash
Expand All @@ -103,15 +144,22 @@ print(explanation)
- Custom Prompts: You can provide your own prompt to guide the explanation

``` bash
explanation = refine_plot_explanation(
explanation = explainer(
fig,
prompt="Explain the key trends in this sales data visualization"
)
```
- Multiple Refinement Iterations: Increase the number of refinement cycles for more polished explanations:

```bash
explanation = refine_plot_explanation(fig, iterations=3) # Default is 2
explanation = explainer(fig, max_iterations=3) # Default is 2
```

## 🔄 Combined Workflow: Suggest → Plot → Explain
``` bash
suggestions = ps.recommender(df)
plot = ps.plotgen(df, suggestions.iloc[0])
insight = ps.explainer(plot)
```

## 🤝 Contributing
Expand All @@ -131,13 +179,15 @@ We welcome contributions!
- More model integrations
- Automated insight highlighting
- Jupyter widget support
- Features/target analysis
- More supported plots

### 📥 Install or Update
``` bash
pip install --upgrade plotsense # Get the latest features!
```
## 🛡 License
MIT License (Open Source)
Apache License 2.0

## 🔐 API & Privacy Notes
- Your API key is securely held in memory for your current Python session.
Expand All @@ -146,3 +196,12 @@ MIT License (Open Source)

Let your data speak—with clarity, power, and PlotSense.
📊✨

## Your Feedback
[Feedback Form](https://forms.gle/QEjipzHiMagpAQU99)






22 changes: 21 additions & 1 deletion plotsense.egg-info/SOURCES.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
LICENCE
NOTICE
README.md
pyproject.toml
setup.py
Expand All @@ -10,6 +12,24 @@ plotsense.egg-info/top_level.txt
plotsense/explanations/__init__.py
plotsense/explanations/explanations.py
plotsense/plot_generator/__init__.py
plotsense/plot_generator/base_generator.py
plotsense/plot_generator/basic_generator.py
plotsense/plot_generator/generator.py
plotsense/plot_generator/helpers.py
plotsense/plot_generator/registry.py
plotsense/plot_generator/smart_generator.py
plotsense/plot_generator/plots/__init__.py
plotsense/visual_suggestion/__init__.py
plotsense/visual_suggestion/suggestions.py
plotsense/visual_suggestion/__init__.py
plotsense/visual_suggestion/recommender/__init__.py
plotsense/visual_suggestion/recommender/dataframe_analyzer.py
plotsense/visual_suggestion/recommender/ensemble_scorer.py
plotsense/visual_suggestion/recommender/prompt_builder.py
plotsense/visual_suggestion/recommender/response_parser.py
plotsense/visual_suggestion/recommender/visualization_recommender.py
test/__init__.py
test/my_ptce_test.py
test/my_test.py
test/test_explanations.py
test/test_plotgen.py
test/test_suggestions.py
8 changes: 7 additions & 1 deletion plotsense.egg-info/requires.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
matplotlib>=3.0
matplotlib>=3.8.0
seaborn>=0.11
pandas>=1.0
numpy>=1.18
python-dotenv
groq
anthropic
openai
google-genai
requests
1 change: 1 addition & 0 deletions plotsense.egg-info/top_level.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
plotsense
test
4 changes: 2 additions & 2 deletions plotsense/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from plotsense.visual_suggestion.suggestions import recommender, VisualizationRecommender
from plotsense.explanations.explanations import explainer,PlotExplainer
from plotsense.plot_generator.generator import plotgen, PlotGenerator
from plotsense.explanations.explanations import explainer, PlotExplainer
from plotsense.plot_generator.generator import plotgen, BasicPlotGenerator, SmartPlotGenerator
Loading