123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- """Plotting module that can plot 2D and 3D functions
- """
- from sympy.utilities.decorator import doctest_depends_on
- @doctest_depends_on(modules=('pyglet',))
- def PygletPlot(*args, **kwargs):
- """
- Plot Examples
- =============
- See examples/advanced/pyglet_plotting.py for many more examples.
- >>> from sympy.plotting.pygletplot import PygletPlot as Plot
- >>> from sympy.abc import x, y, z
- >>> Plot(x*y**3-y*x**3)
- [0]: -x**3*y + x*y**3, 'mode=cartesian'
- >>> p = Plot()
- >>> p[1] = x*y
- >>> p[1].color = z, (0.4,0.4,0.9), (0.9,0.4,0.4)
- >>> p = Plot()
- >>> p[1] = x**2+y**2
- >>> p[2] = -x**2-y**2
- Variable Intervals
- ==================
- The basic format is [var, min, max, steps], but the
- syntax is flexible and arguments left out are taken
- from the defaults for the current coordinate mode:
- >>> Plot(x**2) # implies [x,-5,5,100]
- [0]: x**2, 'mode=cartesian'
- >>> Plot(x**2, [], []) # [x,-1,1,40], [y,-1,1,40]
- [0]: x**2, 'mode=cartesian'
- >>> Plot(x**2-y**2, [100], [100]) # [x,-1,1,100], [y,-1,1,100]
- [0]: x**2 - y**2, 'mode=cartesian'
- >>> Plot(x**2, [x,-13,13,100])
- [0]: x**2, 'mode=cartesian'
- >>> Plot(x**2, [-13,13]) # [x,-13,13,100]
- [0]: x**2, 'mode=cartesian'
- >>> Plot(x**2, [x,-13,13]) # [x,-13,13,100]
- [0]: x**2, 'mode=cartesian'
- >>> Plot(1*x, [], [x], mode='cylindrical')
- ... # [unbound_theta,0,2*Pi,40], [x,-1,1,20]
- [0]: x, 'mode=cartesian'
- Coordinate Modes
- ================
- Plot supports several curvilinear coordinate modes, and
- they independent for each plotted function. You can specify
- a coordinate mode explicitly with the 'mode' named argument,
- but it can be automatically determined for Cartesian or
- parametric plots, and therefore must only be specified for
- polar, cylindrical, and spherical modes.
- Specifically, Plot(function arguments) and Plot[n] =
- (function arguments) will interpret your arguments as a
- Cartesian plot if you provide one function and a parametric
- plot if you provide two or three functions. Similarly, the
- arguments will be interpreted as a curve if one variable is
- used, and a surface if two are used.
- Supported mode names by number of variables:
- 1: parametric, cartesian, polar
- 2: parametric, cartesian, cylindrical = polar, spherical
- >>> Plot(1, mode='spherical')
- Calculator-like Interface
- =========================
- >>> p = Plot(visible=False)
- >>> f = x**2
- >>> p[1] = f
- >>> p[2] = f.diff(x)
- >>> p[3] = f.diff(x).diff(x)
- >>> p
- [1]: x**2, 'mode=cartesian'
- [2]: 2*x, 'mode=cartesian'
- [3]: 2, 'mode=cartesian'
- >>> p.show()
- >>> p.clear()
- >>> p
- <blank plot>
- >>> p[1] = x**2+y**2
- >>> p[1].style = 'solid'
- >>> p[2] = -x**2-y**2
- >>> p[2].style = 'wireframe'
- >>> p[1].color = z, (0.4,0.4,0.9), (0.9,0.4,0.4)
- >>> p[1].style = 'both'
- >>> p[2].style = 'both'
- >>> p.close()
- Plot Window Keyboard Controls
- =============================
- Screen Rotation:
- X,Y axis Arrow Keys, A,S,D,W, Numpad 4,6,8,2
- Z axis Q,E, Numpad 7,9
- Model Rotation:
- Z axis Z,C, Numpad 1,3
- Zoom: R,F, PgUp,PgDn, Numpad +,-
- Reset Camera: X, Numpad 5
- Camera Presets:
- XY F1
- XZ F2
- YZ F3
- Perspective F4
- Sensitivity Modifier: SHIFT
- Axes Toggle:
- Visible F5
- Colors F6
- Close Window: ESCAPE
- =============================
- """
- from sympy.plotting.pygletplot.plot import PygletPlot
- return PygletPlot(*args, **kwargs)
|