I think that not having a hard dependency on plotting libraries is a good thing. That can be solved by removing them from install_requires and lazy importing when used. However, allowing plotting directly from bipy adds a lot of value to bipy, at least for these methods. If the decision is to only return numbers and let the user plot them however they want, I'll remove the `biplot` method (~50 lines of code). In cogent there's some code to do this same kind of plots, also with matplotlib, but I found it difficult to integrate and very verbose so ended up rewriting it and this was the result.

BTW, can emperor be called from python? I think it'd be super cool if something like `emperor_plot(array_of_coordinates, pandas_dataframe_of_metadata_a_la_mapping_file)` worked! :trophy:

Re: the coordinate class, I would wait a bit more. The `biplot` method knows how to plot everything just from the OrdinationResults tuple, so it should be possible to do it without another class.

Thanks for all the comments!