Sure is, it's called NetHogs and it's open source. Out of the box it doesn't give you fancy plots, but it does feature:
- a 'top' like display, showing programs currently using bandwidth, how much, ordered by consumption (view can be customized)
- Easily log data to a file, which you can use any number of plotting / visualization programs to generate graphs (gnuplot, rrdtool, etc)
- Amazingly easy to use as a library if you know C/C++ (but not necessary)
I made a fork of NetHogs in the gcollector program that I wrote as a proof-of-concept pluggable monitoring system for GlusterFS, since I needed something designed to work just in scripts to sort of supervise how much bandwidth each process was using.
But, don't be daunted - out of the box the program is just as easy to use as 'top', and packages are available for it for many popular distributions. If you're an advanced sort of user, then you can really get creative in visualizing what programs eat how much bandwidth at any given time. I've even see folks plug cacti into it, for monitoring per-process consumption on servers.
I believe KDE and GNOME both have several 'gadgets' (used loosely as a universal term) that handle simple monitoring of process bandwidth, but not nearly as comprehensive or flexible as just using NetHogs itself.
Just note, it's tied more to the process than the interface itself, but you can change that around if you need to.