Concept & Problem Statement
Data visualization can be challenging and require development time, especially for users who lack experience with Altair/Vega syntax. This LLM-based app simplifies the process by allowing users to describe their desired charts in plain language, and it automatically generates the corresponding JSON chart configuration for the vega/altair visualisation.
Key Features
- File Upload: Users upload a CSV or JSON dataset.
- Chatbot Interface: Users ask for visualizations in natural language (e.g., “Show me a line chart of sales over time.”).
- Automatic JSON Generation: The chatbot parses the request and creates a Vega/Altair JSON spec.
- Live Preview: The generated chart is displayed in Streamlit.
- Export Option: Users can download the JSON spec or the rendered visualization.
1 Like
Sounds exciting! Could you include a link to the app? 
1 Like
Thanks! At the moment, this is just an idea I had as part of the Connect Challenge. I haven’t built the app yet, but I’m exploring how to make it feasible. Looking forward to any feedback or suggestions!
1 Like
Hey!
I love the idea, I did something very similar which I just released a few days ago, the only difference is that it generates matplotlib code instead of Vega/Altair JSON specs! Would be easy to add the option though.
You can find it here if you’re curious: https://simplyplot.streamlit.app
2 Likes
Hey! I love your work SimplyPlot looks awesome!
It’s really cool how you generate Matplotlib code dynamically. If you’re open to sharing some insights, what type of LLM model did you use for this?
1 Like
Cheers! More than happy to share insights! The actual model being used right now is 4o-mini. I looked at a lot of different LLM orchestration tools, but landed on DSPy because I like their philosophy of auto-prompting optimization. However, I ended up using none of it (yet) haha so it’s basically a fancy wrapper for LiteLLM right now with some nice starter prompts (which tbh gave me quite good out-of-the-box performance simply using their ChainOfThought module).
Also, I really should switch to Gemini Flash 2.0 as it is cheaper and better (and should be as easy as setting up api keys and changing one line of code).
1 Like
That sounds awesome!
You’ve clearly put a lot of thought into this and done some detailed work. I appreciate the insights! I’ll start from what you’ve shared and begin developing, excited to see where it goes! Thanks again for the guidance!