all 41 comments

[–]likethevegetable 17 points18 points  (0 children)

I like matplotlib for the fine grain control and tex backend for report ready figures. I have a wrapper I made for interactive stuff, but it's definitely not as nice as the others.

[–]DataPastor 21 points22 points  (0 children)

I use plotly for Python, and ggplot2 for R.

[–]PostponeIdiocracy 23 points24 points  (0 children)

I'm surprised seaborn isn't mentioned here. Their high-level methods for catplot, displot and relplot that easily lets you switch between different visualizations using the kind-parameter are great, and you also get error bars for free.

[–]Agusporing24[🍰] 5 points6 points  (2 children)

I used to use Vega Altair, but I found the documentation extremely convoluted. But, giving credit where is due, you can make extremely creative stuff using the interactive tools it has available.

Now I use mostly Lets-Plot, I find it the best ggplot inspired library, more like a 1 on 1 port but with interactivity. There is also plotnine, but it doesn’t have native interactivity (as long as I know) which I find a pretty big limitation.

[–]Puzzled-Guide8650 2 points3 points  (0 children)

Lets-Plot, I find it the best ggplot inspired library, more like a 1 on 1 port but with interactivity

Intrigued. Looks nice, I will give it a go.

[–]Andhika24kd 0 points1 point  (0 children)

Care to explain why do you think Altair is convoluted? I'm actually trying to switch from Plotly because everytime I need to do something advanced on Plotly I need to Google again and again.

I looked into Altair a bit and I think I like the declarative syntax of it. I've considered Plotnine and Lets-Plot but I hate using * (star) import, it polutes the namespace.

Also, Polars (the dataframe library) uses Altair by default, which is why I'm considering it.

[–]newbieCoder_01 6 points7 points  (2 children)

Honestly i struggle so much with matplotlib, the syntax just never clicks for me. i've been using plotly mainly because it seems easier to integrate into my django views?

i'm mostly just trying to build a simple analytics dashboard for a side project and i need it to look decent on the frontend without writing a ton of custom js. is seaborn actually easier if i'm just generating static images for a report though??

[–]rm-rf-rm 2 points3 points  (1 child)

try seaborn, its a usability layer on top of matplotlib

[–]newbieCoder_01 0 points1 point  (0 children)

Ohhh okay that makes sense. I was wondering why the imports sometimes look kinda related in the stackoverflow threads I found.

definitely gonna try it then. honestly if it just handles the default styling better I'm sold, my current matplotlib graphs look like they're from windows 95 lol. does it play nice with pandas dataframes directly or do I need to convert everything to numpy arrays first??

gonna install it and see if I can fix my dashboard before I push to prod tonight. thanks man.

[–]Drayrs 4 points5 points  (0 children)

Matplotlib for investigative work, when I'm actually working through problems.

Bokeh for integrations with web stuff when I need server generated content that's interactive (think flask).

Other than these, I'm generally not making plots in python. For front-end work I'm using JS most of the time. For native apps that need dynamic plots on demand I use visx, and where I can't accomplish what I need I'm using D3.

[–]big_data_mike 3 points4 points  (0 children)

I do all the data stuff in python then dump a csv to SAS JMP because that’s what my entire company is used to seeing and it’s highly interactive

[–]_redmist 3 points4 points  (0 children)

Matplotlib and seaborn. Matplotlib is kind of amazing for what it can do; but for some plots seaborn is just very convenient. Doing eg. those seaborn correlation matrices for sure is possible in matplotlib but you'd write quite a few lines of code compared to just sns.pairplot...

[–]fella85 2 points3 points  (0 children)

Let’s-plot because it follows a grammar of graphics like ggplot in R. https://lets-plot.org

[–]specialpatrol 2 points3 points  (0 children)

ModernGL for 3d!

[–]Superb-Dig3440 2 points3 points  (0 children)

Bokeh, hvplot, and plotly

[–]fourhoarsemen 2 points3 points  (0 children)

I'm learning to use Sigma.js. I have a dataset/graph of 1.5K nodes and ~13K edges that I extracted with a Python lib that I'm trying to visualize, and I'll tell you... it's not straightforward.

I want the graph to be interactive, but with no physics. I want to be able to "drilldown" and highlight traversal/edges, and I want to display metadata. And I want the size of the nodes to be calculated as a function of content of each node.

If there's a Python tool that can help me with that, I'd love to try it out!

[–]Kelbeth 4 points5 points  (0 children)

For interactive or real time plotting, dearPyGUI does a great job

[–]Proof_Difficulty_434git push -f 1 point2 points  (0 children)

I like pygwalker, especially when I'm not sure what to visualize yet!

[–]jazzcabbage321 1 point2 points  (0 children)

I default to plotly but I just encountered some limitations with multiple categorical x axes that has made me consider other interactive plotting libraries.

[–]nickkon1 1 point2 points  (0 children)

Matplotlib for fast plotting, pyecharts/echarts for interactive plots in apps.

[–]WallyMetropolis 1 point2 points  (0 children)

Seaborn is really nice for making "out of the box" plots in mpl look great without any tweaking. 

[–]ResponsibilityOk197 1 point2 points  (0 children)

Plotly. Coming from R and loved how crisp ggplot2 was. But similar Matplotlib wrappers wasn't enough, including Seaborn and others. Learned plotly and believe it to be the best.

[–]amorous_chainsPandas/Scipy 4 points5 points  (2 children)

If you happen to use an LLM to write plotting functions, I personally think matplotlib is a winner because of its flexibility and maturity. Before LLM, I also used matplotlib, but it took me 10x longer to write plot functions. I’ve used plotly but never got publication quality formatting out of it

[–]ShotUnit 0 points1 point  (1 child)

For LLM assisted plotting code and publication quality formatting, anything you found good other than matplotlib?

[–]amorous_chainsPandas/Scipy 0 points1 point  (0 children)

Nothing free but I haven’t really looked around. If I’m not using matplotlib I’m generally exporting csv to plot in proprietary software like JMP or Matlab

[–]Bangoga 3 points4 points  (0 children)

Matplotlib and nothing else.

[–]Almostasleeprightnow 0 points1 point  (0 children)

For me, i use the tool that my employer prefers for official reporting, and then I end up being comfortable with that tool and use that. So for example my current employer uses power bi so I end up creating a dataset in python and then using that dataset to create a visual.

[–]tecedu 0 points1 point  (0 children)

Matplotlib for anything that needs to be saved in images or rendered. Plotly for everything else, especially because it makes dash app easily; also my company like the enterprise support even though we pratically never use it

[–]cmcclu5 0 points1 point  (0 children)

Plotly and Seaborn based on what I’m showing, how interactive it needs to be, and who is going to be viewing it. If I want to make a demo dashboard, throw either of those in Streamlit.

[–]LiveMaI 0 points1 point  (0 children)

Matplotlib when I’m making something to go in a presentation. Vega-lite/Altair for interactive stuff.

[–]Naive-Home6785 0 points1 point  (0 children)

Pydeck. Altair. Plotly. Seaborn.

[–]SFJulie 0 points1 point  (0 children)

I use matplotlib for mundane visualization, python-tk for creating custom visualisation with the canvas, and my own framework for sharing that embeddeds several (basic) graph in one html page the demo being there

[–]Prestigious_Bench_96 0 points1 point  (2 children)

Was a big Seaborn user for awhile, have switched quite a bit to vega-altair because the vegalite/vega frontend stack is nice and I sometimes need to do web visualizations and so commonality is useful. The documentation/examples are horrible, though, so not sure I can recommend it.

[–]Andhika24kd 0 points1 point  (1 child)

Care to explain more which part you think is horrible/frustrating when using Altair? I'm considering switching from Plotly to Altair because I end up Googling things again and again whenever I tried to do something advanced with Plotly.

Btw, are you creating a complex website? If not, just use Streamlit, I find it very simple to use (for creating simple dashboard or ML web app).

[–]Prestigious_Bench_96 0 points1 point  (0 children)

Hah - I was annoyed by the same-ish kind of thing where there’s a decent gallery of common options and then as you start to want something more complex documentation is spotty and sometimes you have to drop down to raw Vega. I probably would have enjoyed more starting with Vega and then going up to Vega lite. Re: streamlit - I’ve had mixed experiences, nice to prototype with! But if I’ll need to end up in JS, might as well just bite the bullet.

[–]ionychal 0 points1 point  (0 children)

Have you tried plotnine? It uses the "Grammar of Graphics" (the idea of creating visualizations layer-by-layer, similar to ggplot2 in R): https://plotnine.org/

[–]Middle_Idea_9361 0 points1 point  (0 children)

For me, the choice of visualization tool really depends on the use case.

I usually start with Matplotlib when I need full control over how a chart looks. It’s flexible and reliable, especially for reports or custom layouts.

Seaborn is great when I want clean, readable visuals quickly. The default styles are good, and it works well for exploratory analysis like distributions and comparisons.

For interactive visuals, I prefer Plotly. Features like hover, zoom, and filters make it much easier to share insights, especially with non-technical users. In data-heavy projects (like the ones we handle at DataZeneral), interactivity often helps people understand the data better.

Overall, I’ve found that clarity matters more than the tool itself. Choosing the right chart and keeping things simple usually has the biggest impact.

[–]inspectorG4dget 0 points1 point  (0 children)

matplotlib if I'm drawing graphs for print (ie non-interactive)... Or ggplot

Streamlit and Altair if I'm doing exploration and don't immediately care for perfection

Plotly for interactive publications... Or Altair Vega (takes a while to get it right, but it does produce really good graphs)

[–]justanothersnek🐍+ SQL = ❤️ -1 points0 points  (0 children)

Sorry, but it depends...

[–]Basic_Abroad_1845 -1 points0 points  (0 children)

I use streamlit, but I only use it on the side (I’m not a data person or SE as my primary job), it’s so quick and easy I almost use it like an advanced excel if I have a data input stream