本文整理汇总了Python中sage.plot.all.Graphics类的典型用法代码示例。如果您正苦于以下问题:Python Graphics类的具体用法?Python Graphics怎么用?Python Graphics使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Graphics类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: my_hyperbolic_triangle
def my_hyperbolic_triangle(a, b, c, **options):
"""
Return a hyperbolic triangle in the complex hyperbolic plane with points
(a, b, c). Type ``?hyperbolic_triangle`` to see all options.
INPUT:
- ``a, b, c`` - complex numbers in the upper half complex plane
OPTIONS:
- ``alpha`` - default: 1
- ``fill`` - default: False
- ``thickness`` - default: 1
- ``rgbcolor`` - default: 'blue'
- ``linestyle`` - default: 'solid'
EXAMPLES:
Show a hyperbolic triangle with coordinates 0, `1/2+i\sqrt{3}/2` and
`-1/2+i\sqrt{3}/2`::
sage: hyperbolic_triangle(0, -1/2+I*sqrt(3)/2, 1/2+I*sqrt(3)/2)
A hyperbolic triangle with coordinates 0, 1 and 2+i::
sage: hyperbolic_triangle(0, 1, 2+i, fill=true, rgbcolor='red')
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
model = options['model']
npts = options.get('npts',10)
sides = options.pop('sides',[1,2,3]) ## Which of the sides we will draw.
verbose = options.get('verbose',0)
options.pop('model',None); options.pop('method',None)
if model=="D":
#g.add_primitive(HyperbolicTriangleDisc(a, b, c, **options))
#print "options=",options
options['sides']=sides
H = HyperbolicTriangleDisc(a, b, c, **options)
g += H()
else:
options.pop('npts',None)
if sides == [1,2,3]:
if verbose>0:
print "adding HyperbolicTriangle({0}, {1}, {2},options={3})".format(a,b,c,options)
options.pop('verbose',0)
g.add_primitive(HyperbolicTriangle(a, b, c, options))
else:
options['sides']=sides
if verbose>0:
print "adding MyHyperbolicTriangle({0}, {1}, {2},options={3})".format(a,b,c,options)
g.add_primitive(MyHyperbolicTriangle(a, b, c, options))
g.set_aspect_ratio(1)
return g
开发者ID:nilsskoruppa,项目名称:psage,代码行数:60,代码来源:plot_dom.py
示例2: newton_plot
def newton_plot(self):
S = [QQ(s) for s in self.slopes]
C = Counter(S)
pts = [(0,0)]
x = y = 0
for s in sorted(C):
c = C[s]
x += c
y += c*s
pts.append((x,y))
L = Graphics()
L += line([(0,0),(0,y+0.2)],color="grey")
for i in range(1,y+1):
L += line([(0,i),(0.06,i)],color="grey")
for i in range(1,C[0]):
L += line([(i,0),(i,0.06)],color="grey")
for i in range(len(pts)-1):
P = pts[i]
Q = pts[i+1]
for x in range(P[0],Q[0]+1):
L += line([(x,P[1]),(x,P[1] + (x-P[0])*(Q[1]-P[1])/(Q[0]-P[0]))],color="grey")
for y in range(P[1],Q[1]):
L += line([(P[0] + (y-P[1])*(Q[0]-P[0])/(Q[1]-P[1]),y),(Q[0],y)],color="grey")
L += line(pts, thickness = 2)
L.axes(False)
L.set_aspect_ratio(1)
return encode_plot(L, pad=0, pad_inches=0, bbox_inches='tight')
开发者ID:koffie,项目名称:lmfdb,代码行数:27,代码来源:isog_class.py
示例3: __init__
def __init__(self, A, B, C,**options):
"""
Initialize HyperbolicTriangle under the map (z-z0)/(z-\bar(z0)):
Examples::
sage: from sage.plot.hyperbolic_triangle import HyperbolicTriangle
sage: print HyperbolicTriangle(0, 1/2, I, {})
Hyperbolic triangle (0.000000000000000, 0.500000000000000, 1.00000000000000*I)
"""
A, B, C = (CC(A), CC(B), CC(C))
self.path = []
self._graphics = Graphics()
Z0 = options['center'] #.get('center',C(0,1))
self._z0=CC(Z0); self._z0bar=CC(Z0).conjugate()
self._hyperbolic_arc_d(A, B, True);
self._hyperbolic_arc_d(B, C);
self._hyperbolic_arc_d(C, A);
#BezierPath.__init__(self, self.path, options)
options.pop('center',None)
if options=={} or options==None:
self._options = {}
else:
self._options = options
#super(HyperbolicTriangleDisc,self).__init__(options)
self.A, self.B, self.C = (A, B, C)
开发者ID:jkcrawford,项目名称:psage,代码行数:26,代码来源:plot_dom.py
示例4: hyperbolic_polygon
def hyperbolic_polygon(pts, **options):
r"""
Return a hyperbolic polygon in the hyperbolic plane with vertices ``pts``.
Type ``?hyperbolic_polygon`` to see all options.
INPUT:
- ``pts`` -- a list or tuple of complex numbers
OPTIONS:
- ``alpha`` -- default: 1
- ``fill`` -- default: ``False``
- ``thickness`` -- default: 1
- ``rgbcolor`` -- default: ``'blue'``
- ``linestyle`` -- (default: ``'solid'``) The style of the line, which is
one of ``'dashed'``, ``'dotted'``, ``'solid'``, ``'dashdot'``, or ``'--'``,
``':'``, ``'-'``, ``'-.'``, respectively.
EXAMPLES:
Show a hyperbolic polygon with coordinates `-1`, `3i`, `2+2i`, `1+i`::
sage: hyperbolic_polygon([-1,3*I,2+2*I,1+I])
Graphics object consisting of 1 graphics primitive
.. PLOT::
P = hyperbolic_polygon([-1,3*I,2+2*I,1+I])
sphinx_plot(P)
With more options::
sage: hyperbolic_polygon([-1,3*I,2+2*I,1+I], fill=True, color='red')
Graphics object consisting of 1 graphics primitive
.. PLOT::
P = hyperbolic_polygon([-1,3*I,2+2*I,1+I], fill=True, color='red')
sphinx_plot(P)
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
g.add_primitive(HyperbolicPolygon(pts, options))
g.set_aspect_ratio(1)
return g
开发者ID:mcognetta,项目名称:sage,代码行数:53,代码来源:hyperbolic_polygon.py
示例5: show3d
def show3d(self, size=0.85):
r"""
Return the solution as a 3D Graphic object.
OUTPUT:
3D Graphic Object
EXAMPLES::
sage: from sage.games.quantumino import QuantuminoSolver
sage: s = next(QuantuminoSolver(0).solve()) # not tested (1.5s)
sage: G = s.show3d() # not tested (<1s)
sage: type(G) # not tested
<class 'sage.plot.plot3d.base.Graphics3dGroup'>
To remove the frame::
sage: G.show(frame=False) # not tested
To see the solution with Tachyon viewer::
sage: G.show(viewer='tachyon', frame=False) # not tested
"""
G = Graphics()
for p in self:
G += p.show3d(size=size)
aside_pento = self._aside.canonical() + (2,-4,0)
G += aside_pento.show3d(size=size)
# the box to fill
half_box = tuple(a/2 for a in self._box)
b = cube(color='gray',opacity=0.2).scale(self._box).translate(half_box)
b = b.translate((0, -.5, -.5))
G += b
# hack to set the aspect ratio to 1
a,b = G.bounding_box()
a,b = map(vector, (a,b))
G.frame_aspect_ratio(tuple(b-a))
return G
开发者ID:saraedum,项目名称:sage-renamed,代码行数:42,代码来源:quantumino.py
示例6: show_pentaminos
def show_pentaminos(box=(5,8,2)):
r"""
Show the 17 3-D pentaminos included in the game and the `5 \times 8
\times 2` box where 16 of them must fit.
INPUT:
- ``box`` -- tuple of size three (optional, default: ``(5,8,2)``),
size of the box
OUTPUT:
3D Graphic object
EXAMPLES::
sage: from sage.games.quantumino import show_pentaminos
sage: show_pentaminos() # not tested (1s)
To remove the frame do::
sage: show_pentaminos().show(frame=False) # not tested (1s)
"""
G = Graphics()
for i, p in enumerate(pentaminos):
x = 4 * (i % 4)
y = 4 * (i // 4)
q = p + (x, y, 0)
G += q.show3d()
G += text3d(str(i), (x, y, 2))
G += cube(color='gray',opacity=0.5).scale(box).translate((17, 6, 0))
# hack to set the aspect ratio to 1
a, b = G.bounding_box()
a, b = map(vector, (a, b))
G.frame_aspect_ratio(tuple(b - a))
return G
开发者ID:saraedum,项目名称:sage-renamed,代码行数:38,代码来源:quantumino.py
示例7: hyperbolic_arc
def hyperbolic_arc(a, b, **options):
"""
Plot an arc from a to b in hyperbolic geometry in the complex upper
half plane.
INPUT:
- ``a, b`` - complex numbers in the upper half complex plane
connected bye the arc
OPTIONS:
- ``alpha`` - default: 1
- ``thickness`` - default: 1
- ``rgbcolor`` - default: 'blue'
- ``linestyle`` - (default: ``'solid'``) The style of the line, which is one
of ``'dashed'``, ``'dotted'``, ``'solid'``, ``'dashdot'``, or ``'--'``,
``':'``, ``'-'``, ``'-.'``, respectively.
Examples:
Show a hyperbolic arc from 0 to 1::
sage: hyperbolic_arc(0, 1)
Graphics object consisting of 1 graphics primitive
Show a hyperbolic arc from 1/2 to `i` with a red thick line::
sage: hyperbolic_arc(1/2, I, color='red', thickness=2)
Graphics object consisting of 1 graphics primitive
Show a hyperbolic arc form `i` to `2 i` with dashed line::
sage: hyperbolic_arc(I, 2*I, linestyle='dashed')
Graphics object consisting of 1 graphics primitive
sage: hyperbolic_arc(I, 2*I, linestyle='--')
Graphics object consisting of 1 graphics primitive
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
g.add_primitive(HyperbolicArc(a, b, options))
g.set_aspect_ratio(1)
return g
开发者ID:aaditya-thakkar,项目名称:sage,代码行数:47,代码来源:hyperbolic_arc.py
示例8: show3d
def show3d(self, size=0.85):
r"""
Return the solution as a 3D Graphic object.
OUTPUT:
3D Graphic Object
EXAMPLES::
sage: from sage.games.quantumino import QuantuminoSolver
sage: s = QuantuminoSolver(0).solve().next() # not tested (1.5s)
sage: G = s.show3d() # not tested (<1s)
sage: type(G) # not tested
<class 'sage.plot.plot3d.base.Graphics3dGroup'>
To remove the frame::
sage: G.show(frame=False) # not tested
To see the solution with Tachyon viewer::
sage: G.show(viewer='tachyon', frame=False) # not tested
"""
G = Graphics()
for p in self:
G += p.show3d(size=size)
aside_pento = self._aside.canonical() + (2.5*size/0.75,-4*size/0.75,0)
G += aside_pento.show3d(size=size)
# hack to set the aspect ratio to 1
a,b = G.bounding_box()
a,b = map(vector, (a,b))
G.frame_aspect_ratio(tuple(b-a))
return G
开发者ID:CETHop,项目名称:sage,代码行数:36,代码来源:quantumino.py
示例9: my_hyperbolic_triangle
def my_hyperbolic_triangle(a, b, c, **options):
"""
Return a hyperbolic triangle in the complex hyperbolic plane with points
(a, b, c). Type ``?hyperbolic_triangle`` to see all options.
INPUT:
- ``a, b, c`` - complex numbers in the upper half complex plane
OPTIONS:
- ``alpha`` - default: 1
- ``fill`` - default: False
- ``thickness`` - default: 1
- ``rgbcolor`` - default: 'blue'
- ``linestyle`` - default: 'solid'
EXAMPLES:
Show a hyperbolic triangle with coordinates 0, `1/2+i\sqrt{3}/2` and
`-1/2+i\sqrt{3}/2`::
sage: hyperbolic_triangle(0, -1/2+I*sqrt(3)/2, 1/2+I*sqrt(3)/2)
A hyperbolic triangle with coordinates 0, 1 and 2+i::
sage: hyperbolic_triangle(0, 1, 2+i, fill=true, rgbcolor='red')
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
model = options['model']
options.pop('model',None); options.pop('method',None)
if model=="D":
#g.add_primitive(HyperbolicTriangleDisc(a, b, c, **options))
H = HyperbolicTriangleDisc(a, b, c, **options)
g += H()
else:
g.add_primitive(HyperbolicTriangle(a, b, c, options))
g.set_aspect_ratio(1)
return g
开发者ID:jkcrawford,项目名称:psage,代码行数:45,代码来源:plot_dom.py
示例10: scatter_plot
def scatter_plot(datalist, **options):
"""
Returns a Graphics object of a scatter plot containing all points in
the datalist. Type ``scatter_plot.options`` to see all available
plotting options.
INPUT:
- ``datalist`` -- a list of tuples ``(x,y)``
- ``alpha`` -- default: 1
- ``markersize`` -- default: 50
- ``marker`` - The style of the markers (default ``"o"``), which is one of
- ``"None"`` or ``" "`` or ``""`` (nothing)
- ``","`` (pixel), ``"."`` (point)
- ``"_"`` (horizontal line), ``"|"`` (vertical line)
- ``"o"`` (circle), ``"p"`` (pentagon), ``"s"`` (square), ``"x"`` (x), ``"+"`` (plus), ``"*"`` (star)
- ``"D"`` (diamond), ``"d"`` (thin diamond)
- ``"H"`` (hexagon), ``"h"`` (alternative hexagon)
- ``"<"`` (triangle left), ``">"`` (triangle right), ``"^"`` (triangle up), ``"v"`` (triangle down)
- ``"1"`` (tri down), ``"2"`` (tri up), ``"3"`` (tri left), ``"4"`` (tri right)
- ``0`` (tick left), ``1`` (tick right), ``2`` (tick up), ``3`` (tick down)
- ``4`` (caret left), ``5`` (caret right), ``6`` (caret up), ``7`` (caret down)
- ``"$...$"`` (math TeX string)
- ``facecolor`` -- default: ``'#fec7b8'``
- ``edgecolor`` -- default: ``'black'``
- ``zorder`` -- default: 5
EXAMPLES::
sage: scatter_plot([[0,1],[2,2],[4.3,1.1]], marker='s')
Extra options will get passed on to :meth:`~Graphics.show`, as long as they are valid::
sage: scatter_plot([(0, 0), (1, 1)], markersize=100, facecolor='green', ymax=100)
sage: scatter_plot([(0, 0), (1, 1)], markersize=100, facecolor='green').show(ymax=100) # These are equivalent
"""
import numpy
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(Graphics._extract_kwds_for_show(options))
data = numpy.array(datalist, dtype='float')
if len(data) != 0:
xdata = data[:,0]
ydata = data[:,1]
g.add_primitive(ScatterPlot(xdata, ydata, options=options))
return g
开发者ID:CETHop,项目名称:sage,代码行数:52,代码来源:scatter_plot.py
示例11: hyperbolic_arc
def hyperbolic_arc(a, b, **options):
"""
Plot an arc from a to b in hyperbolic geometry in the complex upper
half plane.
INPUT:
- ``a, b`` - complex numbers in the upper half complex plane
connected bye the arc
OPTIONS:
- ``alpha`` - default: 1
- ``thickness`` - default: 1
- ``rgbcolor`` - default: 'blue'
- ``linestyle`` - default: 'solid'
Examples:
Show a hyperbolic arc from 0 to 1::
sage: hyperbolic_arc(0, 1)
Show a hyperbolic arc from 1/2 to `i` with a red thick line::
sage: hyperbolic_arc(1/2, I, color='red', thickness=2)
Show a hyperbolic arc form `i` to `2 i` with dashed line::
sage: hyperbolic_arc(I, 2*I, linestyle='dashed')
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
g.add_primitive(HyperbolicArc(a, b, options))
g.set_aspect_ratio(1)
return g
开发者ID:chos9,项目名称:sage,代码行数:40,代码来源:hyperbolic_arc.py
示例12: hyperbolic_triangle
def hyperbolic_triangle(a, b, c, **options):
"""
Return a hyperbolic triangle in the complex hyperbolic plane with points
(a, b, c). Type ``?hyperbolic_triangle`` to see all options.
INPUT:
- ``a, b, c`` - complex numbers in the upper half complex plane
OPTIONS:
- ``alpha`` - default: 1
- ``fill`` - default: False
- ``thickness`` - default: 1
- ``rgbcolor`` - default: 'blue'
- ``linestyle`` - (default: ``'solid'``) The style of the line, which is
one of ``'dashed'``, ``'dotted'``, ``'solid'``, ``'dashdot'``, or ``'--'``,
``':'``, ``'-'``, ``'-.'``, respectively.
EXAMPLES:
Show a hyperbolic triangle with coordinates 0, `1/2+i\sqrt{3}/2` and
`-1/2+i\sqrt{3}/2`::
sage: hyperbolic_triangle(0, -1/2+I*sqrt(3)/2, 1/2+I*sqrt(3)/2)
A hyperbolic triangle with coordinates 0, 1 and 2+i and a dashed line::
sage: hyperbolic_triangle(0, 1, 2+i, fill=true, rgbcolor='red', linestyle='--')
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
g.add_primitive(HyperbolicTriangle(a, b, c, options))
g.set_aspect_ratio(1)
return g
开发者ID:CETHop,项目名称:sage,代码行数:40,代码来源:hyperbolic_triangle.py
示例13: scatter_plot
def scatter_plot(datalist, **options):
"""
Returns a Graphics object of a scatter plot containing all points in
the datalist. Type ``scatter_plot.options`` to see all available
plotting options.
INPUT:
- ``datalist`` -- a list of tuples ``(x,y)``
- ``alpha`` -- default: 1
- ``markersize`` -- default: 50
- ``marker`` - The style of the markers (default ``"o"``). See the
documentation of :func:`plot` for the full list of markers.
- ``facecolor`` -- default: ``'#fec7b8'``
- ``edgecolor`` -- default: ``'black'``
- ``zorder`` -- default: 5
EXAMPLES::
sage: scatter_plot([[0,1],[2,2],[4.3,1.1]], marker='s')
Graphics object consisting of 1 graphics primitive
Extra options will get passed on to :meth:`~Graphics.show`, as long as they are valid::
sage: scatter_plot([(0, 0), (1, 1)], markersize=100, facecolor='green', ymax=100)
Graphics object consisting of 1 graphics primitive
sage: scatter_plot([(0, 0), (1, 1)], markersize=100, facecolor='green').show(ymax=100) # These are equivalent
"""
import numpy
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(Graphics._extract_kwds_for_show(options))
data = numpy.array(datalist, dtype='float')
if len(data) != 0:
xdata = data[:,0]
ydata = data[:,1]
g.add_primitive(ScatterPlot(xdata, ydata, options=options))
return g
开发者ID:BlairArchibald,项目名称:sage,代码行数:44,代码来源:scatter_plot.py
示例14: density_plot
def density_plot(f, xrange, yrange, **options):
r"""
``density_plot`` takes a function of two variables, `f(x,y)`
and plots the height of of the function over the specified
``xrange`` and ``yrange`` as demonstrated below.
``density_plot(f, (xmin, xmax), (ymin, ymax), ...)``
INPUT:
- ``f`` -- a function of two variables
- ``(xmin, xmax)`` -- 2-tuple, the range of ``x`` values OR 3-tuple
``(x,xmin,xmax)``
- ``(ymin, ymax)`` -- 2-tuple, the range of ``y`` values OR 3-tuple
``(y,ymin,ymax)``
The following inputs must all be passed in as named parameters:
- ``plot_points`` -- integer (default: 25); number of points to plot
in each direction of the grid
- ``cmap`` -- a colormap (type ``cmap_help()`` for more information).
- ``interpolation`` -- string (default: ``'catrom'``), the interpolation
method to use: ``'bilinear'``, ``'bicubic'``, ``'spline16'``,
``'spline36'``, ``'quadric'``, ``'gaussian'``, ``'sinc'``,
``'bessel'``, ``'mitchell'``, ``'lanczos'``, ``'catrom'``,
``'hermite'``, ``'hanning'``, ``'hamming'``, ``'kaiser'``
EXAMPLES:
Here we plot a simple function of two variables. Note that
since the input function is an expression, we need to explicitly
declare the variables in 3-tuples for the range::
sage: x,y = var('x,y')
sage: density_plot(sin(x)*sin(y), (x, -2, 2), (y, -2, 2))
Graphics object consisting of 1 graphics primitive
Here we change the ranges and add some options; note that here
``f`` is callable (has variables declared), so we can use 2-tuple ranges::
sage: x,y = var('x,y')
sage: f(x,y) = x^2*cos(x*y)
sage: density_plot(f, (x,-10,5), (y, -5,5), interpolation='sinc', plot_points=100)
Graphics object consisting of 1 graphics primitive
An even more complicated plot::
sage: x,y = var('x,y')
sage: density_plot(sin(x^2 + y^2)*cos(x)*sin(y), (x, -4, 4), (y, -4, 4), cmap='jet', plot_points=100)
Graphics object consisting of 1 graphics primitive
This should show a "spotlight" right on the origin::
sage: x,y = var('x,y')
sage: density_plot(1/(x^10+y^10), (x, -10, 10), (y, -10, 10))
Graphics object consisting of 1 graphics primitive
Some elliptic curves, but with symbolic endpoints. In the first
example, the plot is rotated 90 degrees because we switch the
variables `x`, `y`::
sage: density_plot(y^2 + 1 - x^3 - x, (y,-pi,pi), (x,-pi,pi))
Graphics object consisting of 1 graphics primitive
::
sage: density_plot(y^2 + 1 - x^3 - x, (x,-pi,pi), (y,-pi,pi))
Graphics object consisting of 1 graphics primitive
Extra options will get passed on to show(), as long as they are valid::
sage: density_plot(log(x) + log(y), (x, 1, 10), (y, 1, 10), dpi=20)
Graphics object consisting of 1 graphics primitive
::
sage: density_plot(log(x) + log(y), (x, 1, 10), (y, 1, 10)).show(dpi=20) # These are equivalent
TESTS:
Check that :trac:`15315` is fixed, i.e., density_plot respects the
``aspect_ratio`` parameter. Without the fix, it looks like a thin line
of width a few mm. With the fix it should look like a nice fat layered
image::
sage: density_plot((x*y)^(1/2), (x,0,3), (y,0,500), aspect_ratio=.01)
Graphics object consisting of 1 graphics primitive
Default ``aspect_ratio`` is ``"automatic"``, and that should work too::
sage: density_plot((x*y)^(1/2), (x,0,3), (y,0,500))
Graphics object consisting of 1 graphics primitive
"""
#.........这里部分代码省略.........
开发者ID:ProgVal,项目名称:sage,代码行数:101,代码来源:density_plot.py
示例15: bezier_path
def bezier_path(path, **options):
"""
Returns a Graphics object of a Bezier path corresponding to the
path parameter. The path is a list of curves, and each curve is
a list of points. Each point is a tuple ``(x,y)``.
The first curve contains the endpoints as the first and last point
in the list. All other curves assume a starting point given by the
last entry in the preceding list, and take the last point in the list
as their opposite endpoint. A curve can have 0, 1 or 2 control points
listed between the endpoints. In the input example for path below,
the first and second curves have 2 control points, the third has one,
and the fourth has no control points:
path = [[p1, c1, c2, p2], [c3, c4, p3], [c5, p4], [p5], ...]
In the case of no control points, a straight line will be drawn
between the two endpoints. If one control point is supplied, then
the curve at each of the endpoints will be tangent to the line from
that endpoint to the control point. Similarly, in the case of two
control points, at each endpoint the curve will be tangent to the line
connecting that endpoint with the control point immediately after or
immediately preceding it in the list.
So in our example above, the curve between p1 and p2 is tangent to the
line through p1 and c1 at p1, and tangent to the line through p2 and c2
at p2. Similarly, the curve between p2 and p3 is tangent to line(p2,c3)
at p2 and tangent to line(p3,c4) at p3. Curve(p3,p4) is tangent to
line(p3,c5) at p3 and tangent to line(p4,c5) at p4. Curve(p4,p5) is a
straight line.
INPUT:
- ``path`` -- a list of lists of tuples (see above)
- ``alpha`` -- default: 1
- ``fill`` -- default: False
- ``thickness`` -- default: 1
- ``linestyle`` -- default: 'solid'
- ``rbgcolor`` -- default: (0,0,0)
- ``zorder`` -- the layer in which to draw
EXAMPLES::
sage: path = [[(0,0),(.5,.1),(.75,3),(1,0)],[(.5,1),(.5,0)],[(.2,.5)]]
sage: b = bezier_path(path, linestyle='dashed', rgbcolor='green')
sage: b
To construct a simple curve, create a list containing a single list::
sage: path = [[(0,0),(.5,1),(1,0)]]
sage: curve = bezier_path(path, linestyle='dashed', rgbcolor='green')
sage: curve
Extra options will get passed on to :meth:`~Graphics.show`, as long as they are valid::
sage: bezier_path([[(0,1),(.5,0),(1,1)]], fontsize=50)
sage: bezier_path([[(0,1),(.5,0),(1,1)]]).show(fontsize=50) # These are equivalent
"""
from sage.plot.all import Graphics
g = Graphics()
g._set_extra_kwds(g._extract_kwds_for_show(options))
g.add_primitive(BezierPath(path, options))
return g
开发者ID:sageb0t,项目名称:testsage,代码行数:63,代码来源:bezier_path.py
示例16: disk
def disk(point, radius, angle, **options):
r"""
A disk (that is, a sector or wedge of a circle) with center
at a point = `(x,y)` (or `(x,y,z)` and parallel to the
`xy`-plane) with radius = `r` spanning (in radians)
angle=`(rad1, rad2)`.
Type ``disk.options`` to see all options.
EXAMPLES:
Make some dangerous disks::
sage: bl = disk((0.0,0.0), 1, (pi, 3*pi/2), color='yellow')
sage: tr = disk((0.0,0.0), 1, (0, pi/2), color='yellow')
sage: tl = disk((0.0,0.0), 1, (pi/2, pi), color='black')
sage: br = disk((0.0,0.0), 1, (3*pi/2, 2*pi), color='black')
sage: P = tl+tr+bl+br
sage: P.show(xmin=-2,xmax=2,ymin=-2,ymax=2)
The default aspect ratio is 1.0::
sage: disk((0.0,0.0), 1, (pi, 3*pi/2)).aspect_ratio()
1.0
Another example of a disk::
sage: bl = disk((0.0,0.0), 1, (pi, 3*pi/2), rgbcolor=(1,1,0))
sage: bl.show(figsize=[5,5])
Note that since ``thickness`` defaults to zero, it is best to change
that option when using ``fill=False``::
sage: disk((2,3), 1, (pi/4,pi/3), hue=.8, alpha=.3, fill=False, thickness=2)
The previous two examples also illustrate using ``hue`` and ``rgbcolor``
as ways of specifying the color of the graphic.
We can also use this command to plot three-dimensional disks parallel
to the `xy`-plane::
sage: d = disk((1,1,3), 1, (pi,3*pi/2), rgbcolor=(1,0,0))
sage: d
sage: type(d)
<type 'sage.plot.plot3d.index_face_set.IndexFaceSet'>
Extra options will get passed on to ``show()``, as long as they are valid::
sage: disk((0, 0), 5, (0, pi/2), xmin=0, xmax=5, ymin=0, ymax=5, figsize=(2,2), rgbcolor=(1, 0, 1))
sage: disk((0, 0), 5, (0, pi/2), rgbcolor=(1, 0, 1)).show(xmin=0, xmax=5, ymin=0, ymax=5, figsize=(2,2)) # These are equivalent
TESTS:
Testing that legend labels work right::
sage: disk((2,4), 3, (pi/8, pi/4), hue=1, legend_label='disk', legend_color='blue')
We cannot currently plot disks in more than three dimensions::
sage: d = disk((1,1,1,1), 1, (0,pi))
Traceback (most recent call last):
...
ValueError: The center point of a plotted disk should have two or three coordinates.
"""
from sage.plot.all import Graphics
g = Graphics()
# Reset aspect_ratio to 'automatic' in case scale is 'semilog[xy]'.
# Otherwise matplotlib complains.
scale = options.get('scale', None)
if isinstance(scale, (list, tuple)):
scale = scale[0]
if scale == 'semilogy' or scale == 'semilogx':
options['aspect_ratio'] = 'automatic'
g._set_extra_kwds(Graphics._extract_kwds_for_show(options))
g.add_primitive(Disk(point, radius, angle, options))
if options['legend_label']:
g.legend(True)
g._legend_colors = [options['legend_color']]
if len(point)==2:
return g
elif len(point)==3:
return g[0].plot3d(z=point[2])
else:
raise ValueError, 'The center point of a plotted disk should have two or three coordinates.'
开发者ID:CETHop,项目名称:sage,代码行数:86,代码来源:disk.py
示例17: geomrep
def geomrep(M1, B1=None, lineorders1=None, pd=None, sp=False):
"""
Return a sage graphics object containing geometric representation of
matroid M1.
INPUT:
- ``M1`` -- A matroid.
- ``B1`` -- (optional) A list of elements in ``M1.groundset()`` that
correspond to a basis of ``M1`` and will be placed as vertices of the
triangle in the geometric representation of ``M1``.
- ``lineorders1`` -- (optional) A list of ordered lists of elements of
``M1.grondset()`` such that if a line in geometric representation is
setwise same as any of these then points contained will be traversed in
that order thus overriding internal order deciding heuristic.
- ``pd`` - (optional) A dictionary mapping ground set elements to their
(x,y) positions.
- ``sp`` -- (optional) If True, a positioning dictionary and line orders
will be placed in ``M._cached_info``.
OUTPUT:
A sage graphics object of type <class 'sage.plot.graphics.Graphics'> that
corresponds to the geometric representation of the matroid.
EXAMPLES::
sage: from sage.matroids import matroids_plot_helpers
sage: M=matroids.named_matroids.P7()
sage: G=matroids_plot_helpers.geomrep(M)
sage: G.show(xmin=-2, xmax=3, ymin=-2, ymax=3)
sage: M=matroids.named_matroids.P7()
sage: G=matroids_plot_helpers.geomrep(M,lineorders1=[['f','e','d']])
sage: G.show(xmin=-2, xmax=3, ymin=-2, ymax=3)
.. NOTE::
This method does NOT do any checks.
"""
G = Graphics()
# create lists of loops and parallel elements and simplify given matroid
[M, L, P] = slp(M1, pos_dict=pd, B=B1)
if B1 is None:
B1 = list(M.basis())
M._cached_info = M1._cached_info
if M.rank() == 0:
limits = None
loops = L
looptext = ", ".join([str(l) for l in loops])
rectx = -1
recty = -1
rectw = 0.5 + 0.4*len(loops) + 0.5 # controlled based on len(loops)
recth = 0.6
G += polygon2d([[rectx, recty], [rectx, recty+recth],
[rectx+rectw, recty+recth], [rectx+rectw, recty]],
color='black', fill=False, thickness=4)
G += text(looptext, (rectx+0.5, recty+0.3), color='black',
fontsize=13)
G += point((rectx+0.2, recty+0.3), color=Color('#BDBDBD'), size=300,
zorder=2)
G += text('Loop(s)', (rectx+0.5+0.4*len(loops)+0.1, recty+0.3),
fontsize=13, color='black')
limits = tracklims(limits, [rectx, rectx+rectw], [recty, recty+recth])
G.axes(False)
G.axes_range(xmin=limits[0]-0.5, xmax=limits[1]+0.5,
ymin=limits[2]-0.5, ymax=limits[3]+0.5)
return G
elif M.rank() == 1:
if M._cached_info is not None and \
'plot_positions' in M._cached_info.keys() and \
M._cached_info['plot_positions'] is not None:
pts = M._cached_info['plot_positions']
else:
pts = {}
gnd = sorted(M.groundset())
pts[gnd[0]] = (1, float(2)/3)
G += point((1, float(2)/3), size=300, color=Color('#BDBDBD'), zorder=2)
pt = [1, float(2)/3]
if len(P) == 0:
G += text(gnd[0], (float(pt[0]), float(pt[1])), color='black',
fontsize=13)
pts2 = pts
# track limits [xmin,xmax,ymin,ymax]
pl = [list(x) for x in pts2.values()]
lims = tracklims([None, None, None, None], [pt[0] for pt in pl],
[pt[1] for pt in pl])
elif M.rank() == 2:
nB1 = list(set(list(M.groundset())) - set(B1))
bline = []
for j in nB1:
if M.is_dependent([j, B1[0], B1[1]]):
bline.append(j)
interval = len(bline)+1
if M._cached_info is not None and \
'plot_positions' in M._cached_info.keys() and \
M._cached_info['plot_positions'] is not None:
pts2 = M._cached_info['plot_positions']
else:
pts2 = {}
#.........这里部分代码省略.........
开发者ID:Etn40ff,项目名称:sage,代码行数:101,代码来源:matroids_plot_helpers.py
示例18: plot
#.........这里部分代码省略.........
... D.set_edge_label(u,v,'(' + str(u) + ',' + str(v) + ')')
sage: D.graphplot(edge_labels=True, layout='circular').show()
sage: from sage.plot.colors import rainbow
sage: C = graphs.CubeGraph(5)
sage: R = rainbow(5)
sage: edge_colors = {}
sage: for i in range(5):
... edge_colors[R[i]] = []
sage: for u,v,l in C.edges():
... for i in range(5):
... if u[i] != v[i]:
... edge_colors[R[i]].append((u,v,l))
sage: C.graphplot(vertex_labels=False, vertex_size=0, edge_colors=edge_colors).show()
sage: D = graphs.DodecahedralGraph()
sage: Pi = [[6,5,15,14,7],[16,13,8,2,4],[12,17,9,3,1],[0,19,18,10,11]]
sage: D.show(partition=Pi)
sage: G = graphs.PetersenGraph()
sage: G.allow_loops(True)
sage: G.add_edge(0,0)
sage: G.show()
sage: D = DiGraph({0:[0,1], 1:[2], 2:[3]}, loops=True)
sage: D.show()
sage: D.show(edge_colors={(0,1,0):[(0,1,None),(1,2,None)],(0,0,0):[(2,3,None)]})
sage: pos = {0:[0.0, 1.5], 1:[-0.8, 0.3], 2:[-0.6, -0.8], 3:[0.6, -0.8], 4:[0.8, 0.3]}
sage: g = Graph({0:[1], 1:[2], 2:[3], 3:[4], 4:[0]})
sage: g.graphplot(pos=pos, layout='spring', iterations=0).plot()
sage: G = Graph()
sage: P = G.graphplot().plot()
sage: P.axes()
False
sage: G = DiGraph()
sage: P = G.graphplot().plot()
sage: P.axes()
False
sage: T = list(graphs.trees(7))
sage: t = T[3]
sage: t.graphplot(heights={0:[0], 1:[4,5,1], 2:[2], 3:[3,6]}).plot()
sage: T = list(graphs.trees(7))
sage: t = T[3]
sage: t.graphplot(heights={0:[0], 1:[4,5,1], 2:[2], 3:[3,6]}).plot()
sage: t.set_edge_label(0,1,-7)
sage: t.set_edge_label(0,5,3)
sage: t.set_edge_label(0,5,99)
sage: t.set_edge_label(1,2,1000)
sage: t.set_edge_label(3,2,'spam')
sage: t.set_edge_label(2,6,3/2)
sage: t.set_edge_label(0,4,66)
sage: t.graphplot(heights={0:[0], 1:[4,5,1], 2:[2], 3:[3,6]}, edge_labels=True).plot()
sage: T = list(graphs.trees(7))
sage: t = T[3]
sage: t.graphplot(layout='tree').show()
sage: t = DiGraph('[email protected]??GO??CO??GO??')
sage: t.graphplot(layout='tree', tree_root=0, tree_orientation="up").show()
sage: D = DiGraph({0:[1,2,3], 2:[1,4], 3:[0]})
sage: D.graphplot().show()
sage: D = DiGraph(multiedges=True, sparse=True)
sage: for i in range(5):
... D.add_edge((i,i+1,'a'))
... D.add_edge((i,i-1,'b'))
sage: D.graphplot(edge_labels=True,edge_colors=D._color_by_label()).plot()
sage: g = Graph({}, loops=True, multiedges=True, sparse=True)
sage: g.add_edges([(0,0,'a'),(0,0,'b'),(0,1,'c'),(0,1,'d'),
... (0,1,'e'),(0,1,'f'),(0,1,'f'),(2,1,'g'),(2,2,'h')])
sage: g.graphplot(edge_labels=True, color_by_label=True, edge_style='dashed').plot()
"""
G = Graphics()
for comp in self._plot_components.values():
if not isinstance(comp, list):
G += comp
else:
for item in comp:
G += item
G.set_axes_range(*(self._graph._layout_bounding_box(self._pos)))
if self._options['graph_border']:
xmin = G.xmin()
xmax = G.xmax()
ymin = G.ymin()
ymax = G.ymax()
dx = (xmax-xmin)/10.0
dy = (ymax-ymin)/10.0
border = (line([( xmin - dx, ymin - dy), ( xmin - dx, ymax + dy ), ( xmax + dx, ymax + dy ), ( xmax + dx, ymin - dy ), ( xmin - dx, ymin - dy )], thickness=1.3))
border.axes_range(xmin = (xmin - dx), xmax = (xmax + dx), ymin = (ymin - dy), ymax = (ymax + dy))
G += border
G.set_aspect_ratio(1)
G.axes(False)
G._extra_kwds['axes_pad']=.05
return G
开发者ID:dagss,项目名称:sage,代码行数:101,代码来源:graph_plot.py
示例19: draw_funddom_d
def draw_funddom_d(coset_reps,format="MP",z0=I,verbose=0):
r""" Draw a fundamental domain for self in the circle model
INPUT:
- ''format'' -- (default 'Disp') How to present the f.d.
= 'S' -- Display directly on the screen
- z0 -- (default I) the upper-half plane is mapped to the disk by z-->(z-z0)/(z-z0.conjugate())
EXAMPLES::
sage: G=MySubgroup(Gamma0(3))
sage: G._draw_funddom_d()
"""
# The fundamental domain consists of copies of the standard fundamental domain
pi=RR.pi()
from sage.plot.plot import (Graphics,line)
g=Graphics()
bdcirc=_circ_arc(0 ,2 *pi,0 ,1 ,1000 )
g=g+bdcirc
# Corners
x1=-RR(0.5); y1=RR(sqrt(3 )/2)
x2=RR(0.5); y2=RR(sqrt(3 )/2)
z_inf=1
l1 = _geodesic_between_two_points_d(x1,y1,x1,infinity)
l2 = _geodesic_between_two_points_d(x2,y2,x2,infinity)
c0 = _geodesic_between_two_points_d(x1,y1,x2,y2)
tri=c0+l1+l2
g=g+tri
for A in coset_reps:
a,b,c,d=A
if a==1 and b==0 and c==0 and d==1:
continue
if a<0:
a=-a; b=-b; c=-c; d=-d
if verbose>0:
print "a,b,c,d=",a,b,c,d
if c==0: # then this is easier
l1 = _geodesic_between_two_points_d(x1+b,y1,x1+b,infinity)
l2 = _geodesic_between_two_points_d(x2+b,y2,x2+b,infinity)
c0 = _geodesic_between_two_points_d(x1+b,y1,x2+b,y2)
# c0=line(L0); l1=line(L1); l2=line(L2); l3=line(L3)
tri=c0+l1+l2
g=g+tri
else:
den=(c*x1+d)**2 +c**2 *y1**2
x1_t=(a*c*(x1**2 +y1**2 )+(a*d+b*c)*x1+b*d)/den
y1_t=y1/den
den=(c*x2+d)**2 +c**2 *y2**2
x2_t=(a*c*(x2**2 +y2**2 )+(a*d+b*c)*x2+b*d)/den
y2_t=y2/den
inf_t=a/c
if verbose>0:
print "x1_t=",x1_t
|
请发表评论