posit-dev / positron

Positron, a next-generation data science IDE
https://positron.posit.co
Other
2.82k stars 90 forks source link

Use a tight bounding box when plotting at the intrinsic size #5437

Open seeM opened 12 hours ago

seeM commented 12 hours ago

Addresses https://github.com/posit-dev/positron/issues/5068. This brings our matplotlib configuration closer to Jupyter Notebooks when using the intrinsic sizing policy which is probably more familiar to users.

Since the produced image pixel size is no longer guaranteed, I also changed the save plot modal to display the size in intrinsic units instead of pixels.

Known Issues

If you plot totally outside of the default bounding box, it's missed by our current plot change detection and an "update" is not sent to the frontend. I was unable to find a fix in a reasonable amount of fiddling.

It's a bit of a hack but you can manually request an update with fig.canvas.manager.update(). Maybe a better workaround would be to add a refresh button to the plots action bar?

QA Notes

Running the following code in a single execution should include the title in the plot (you can't run it line-by-line because of the known issue above).

fig, ax = plt.subplots()
fig.text(x=0.5, y=1, s='title')
plt.show()