GSoC 2026 introduction - Jaya Prajapati

Hello ! @story645

I am Jaya Prajapati, a 2nd year civil engineering student at NIT GOA, India.

I’ve mainly used Matplotlib in my coursework to visualize structural behavior. One of the key use cases for me has been plotting beam deflection curves using Python, where I analyze how displacement varies along the length of a beam under different loading conditions. I also use simple comparative plots to study how changing parameters like load or boundary conditions affects the system. In these cases, visualization is less about presentation and more about understanding physical behavior.

While working on these problems, I observed that even small updates to a plot often trigger a full redraw of the entire figure. This works for static plots, but feels inefficient for interactive use and can introduce lag. This observation got me interested in how Matplotlib’s rendering pipeline handles drawing and updates internally.

I’m particularly interested in the overlay/ interactive backend project, especially the idea of separating dynamic elements (like cursors or crosshairs) and updating only the affected regions instead of redrawing the full figure, seems like a practical way to improve performance while keeping the design extensible.

I’ve also started contributing to Matplotlib - with one of my pull requests has been merged “which involved fixing a bug in ax.hist()where sequences of timedeltas caused dtype comparison issues with NumPy” (#31182) and I currently have a couple of PRs under review. Through this, I’ve been exploring the codebase, understanding how different components interact, and getting familiar with the contribution workflow.

I primarily work with Python and have used it for solving coursework-related problems involving computation and visualization, and more recently been focusing on understanding larger codebases like Matplotlib by reading source code, debugging issues, and contributing fixes.

I’ve been exploring how interactive elements currently trigger full redraws and how mechanisms like Blitting help avoid that. From the discussions, it seems that combining partial redraw(region-based updates) with a clearer separation of dynamic elements could improve performance without adding much overhead. I’d appreciate guidance on which parts of the codebase would be most relevant to explore this direction further:).