Hi
I'm Shivam Vats, a second year undergraduate Maths and Computing student at IIT, Kharagpur, India. I'll be applying for Gsoc
2015 with Sympy. I've got a few patches merged and have been exploring Sympy for over a few months. Though I've not decided
on my proposal, recently while looking into the plotting module I realised that there is a lot of work to do in it. The rationale for this
post is to clear my doubts and get everyone's views regarding the issues in the plotting module. I'd appreciate any help.
ISSUES/BUGS
1) Sympy can't interpret the assumptions about the variables in the equations. eg:
x = Symbol('x', positive=True)
plot(x)
It plots on the default [-10,10] interval, where it clearly shouldn't. My
PR 8701 is a start, but it solves the problem only for
positive and negative variables. However the basic question is whether we should check the range given by the user and
whether we want to have a smarter default range than the present [-10, 10].
In my opinion, a function that finds the domain of the function, taking into account the assumptions about the variables in it
should work.
2) Currently if the ylim is not specified, plot adjusts the scale to show the whole graph. In many cases it may not be desired
(Try plotting 1/x with default values) Instead of this default behaviour, one which limits the ylim to say a factor(just an example)
of the max(x) should give better results, something like:
if parent.ylim:
self.ax.set_ylim(parent.ylim)
else:
starts = [s.start for s in parent._series]
ends = [s.end for s in parent._series]
self.ax.set_ylim(10*min(starts), 10*max(ends))
TODOs
1) ContourSeries class in plot.py is currently not used anywhere:- I found this piece of code lying unused. Do we want to create a plot_contour
function on the lines of plot?
2) A more general way to calculate aesthetics:- I found this in the code. Could someone please elaborate on what features we might want
to add? Currently it can handle a function.
using triangular meshes: I don't understand the method right now, but would be more than happy to work on it if someone could give me
some pointers on how to start.
Cheers!