I'll write a backward-compatible wrapper for plot, so yes. Mostly. I'll try to emulate it as closely as possible, but any code that depends on the specific pixels or snip% class `plot' generates will probably break.

I want plot2d and plot3d to be a little saner than plot. For example, currently, plot2d automatically shows the entirety of a parabolic curve; in contrast, plot only shows it in the area [-5,5] x [-5,5] unless you override it.

Neil T

On 08/02/2011 11:38 AM, Matthias Felleisen wrote:
Will it be backward compatible with plot? -- Matthias



On Aug 2, 2011, at 1:33 PM, Neil Toronto wrote:

Re-routing this email exchange to [racket-dev] for comments.

Long story short: Jay roped me into replacing the current `plot' module by 
wrapping a plot library I was working on for my own use. (FWIW, I'm happy to 
finally contribute something!) Intended features:

1. Doesn't depend on an FFI to libplplot
2. Can automatically place plot area on functions and points
3. Uses parameters for keyword argument default values
4. Uses only dc<%>  primitives / Is very pretty
5. Is more flexible (when using the new plot2d and plot3d modules)

Linux screenshots:

    http://students.cs.byu.edu/~ntoronto/plot2d.png
    http://students.cs.byu.edu/~ntoronto/plot3d.png

The first shows off the almost-finished plot2d. It's as fast as the original 
`plot', and `shade' is twice as fast. Props to Matthew and Linux's foreign 
drawing libs for making it look so nice.

The second shows off 3d-plot-area%, which wraps a dc<%>  with 3d drawing 
primitives. The new plot3d will be 1.5x-2x slower, but the new features (e.g. 
compositing 3d plots, contours) should be worth it.

I'll push code to github soon, and ask for volunteers to verify that it looks 
good on Mac and Windows.

Specific questions
------------------

Matthew: It should look good on Mac and Windows if their drawing libs do 
subpixel-accurate, high-quality antialiasing. Do they?

Doug and other heavy `plot' users: What can I add to plot2d and plot3d to make 
your life easier?

Noel: Do you happen to have a kernel density estimator implementation that uses 
FFT or is otherwise more efficient than O(n^2)? Currently, (plot2d (density 
samples)) works, but is slow on large samples.

Anyone: Are there any original `plot' features that should *not* be emulated in 
the new `plot' wrapper module?

Anyone: Is it easy/possible to manipulate snip%s with, say, a click-and-drag? 
How about placing edit boxes on them? If it's not hard, I would like to make 
the 3d plots manipulatable after rendering.

Neil T

On 07/30/2011 02:01 PM, Jay McCarthy wrote:
Yup, so that old programs will keep working.

Will you support the line fitting?

Jay

On Sat, Jul 30, 2011 at 1:56 PM, Neil Toronto<neil.toro...@gmail.com>   wrote:
Sure can! Does "compatible source library" mean a bunch of wrappers for the
functions "plot" currently exports?

Neil

On 07/30/2011 05:49 AM, Jay McCarthy wrote:
Awesome. We've been wanting to throw it out for a long time. Can you
make a compatible source library too... so we can replace it in the
core?

Jay

On Fri, Jul 29, 2011 at 10:35 PM, Neil Toronto<neil.toro...@gmail.com>
  wrote:
I've attached a screenshot of what I'm working on.

It's a replacement for Racket's plot module. The plot module has these
drawbacks:

1. It's not smart enough to automatically size plots to the things -
"renderers" - you're plotting. A renderer is only a function that accepts
an
image snip, so the plotter can't compute a rectangle that contains it.

2. It depends on an external library, plplot.

3. It draws ugly curves because plplot can't draw lines with
subpixel-accurate endpoints. Also, plplot messes up antialiasing when the
curves are made of too many lines. Whatever Racket uses doesn't have this
problem, at least on Linux.

4. It doesn't use parameters for things for which parameters make sense,
like the size of the plots.

I could probably alter the plot module for any one or two of these and
submit patches. For all four, writing a replacement makes more sense.

FWIW, this is related to my research. I've been using R to generate
plots,
but it's getting annoying to serialize samples in Racket and then
unserialize them in R.

Also, Bayesians make a LOT of plots. It's *really* nice to display them
using image snips. That's very, very cool.

This project feels vacation-y and relaxing. I figure it's because it
doesn't
require any more math than linear algebra. :D

Neil
_________________________________________________
For list-related administrative tasks:
http://lists.racket-lang.org/listinfo/dev

_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev

Reply via email to