orbitdeterminator icon indicating copy to clipboard operation
orbitdeterminator copied to clipboard

plot_kep breaks with recent matplotlib

Open craigim opened this issue 5 years ago • 3 comments

When I try to use plot_kep, I get :

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-119-76c4fc158eb2> in <module>
----> 1 plot_kep(kep, data[:, 1:4])

~/anaconda3/lib/python3.7/site-packages/orbitdeterminator-1.0-py3.7.egg/orbitdeterminator/kep_determination/ellipse_fit.py in plot_kep(kep, data)
    386     fig = plt.figure()
    387     ax = Axes3D(fig)
--> 388     ax.axis('equal')
    389 
    390     # plot

~/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py in axis(self, *args, **kwargs)
   1675                 # self.apply_aspect()
   1676                 if s == 'equal':
-> 1677                     self.set_aspect('equal', adjustable='datalim')
   1678                 elif s == 'scaled':
   1679                     self.set_aspect('equal', adjustable='box', anchor='C')

~/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py in set_aspect(self, aspect, adjustable, anchor, share)
   1279         if (not cbook._str_equal(aspect, 'auto')) and self.name == '3d':
   1280             raise NotImplementedError(
-> 1281                 'It is not currently possible to manually set the aspect '
   1282                 'on 3D axes')
   1283 

NotImplementedError: It is not currently possible to manually set the aspect on 3D axes

It appears to be related to matplotlib/matplotlib#1077 where, rather than fixing an issue with setting the aspect ratio, they instead just shut off the feature.

craigim avatar Mar 19 '20 23:03 craigim

I have tried it, and you're right. It seems to be an open issue within the matplotlib library. I suggest to put it as a try-except block, trying the matplotlib function, but if there's this error (NotImplementedError), then try another way. This way would be to put a numerical limit on the axes, where these limits would be the largest (and smallest) value of all the axes, and then set it to all of the axes (original idea of tauran). I tried it with the orbit.csv dataset, and it seems to work just fine. I'll do a pull request so that they can test it and improve it further.

Allan-Perez avatar Mar 25 '20 12:03 Allan-Perez

Setting the aspect of 3D plots never actually worked (which is why we now raise NotImplemented).

tacaswell avatar Apr 22 '20 03:04 tacaswell

@tacaswell @craigim @Allan-Perez can we close this issue?

hornig avatar Mar 25 '21 22:03 hornig