def plot_known(self): r""" TESTS:: sage: from ore_algebra import * sage: from ore_algebra.analytic.function import DFiniteFunction sage: DiffOps, x, Dx = DifferentialOperators() sage: f = DFiniteFunction((x^2 + 1)*Dx^2 + 2*x*Dx, [0, 1]) sage: f(-10, 100) # long time [-1.4711276743037345918528755717...] sage: f.approx(5, post_transform=Dx) # long time [0.038461538461538...] sage: f.plot_known() # long time Graphics object consisting of ... graphics primitives """ g = plot.Graphics() for center, polys in self._polys.iteritems(): center, rad = self._disk(Point(center, self.dop)) xrange = (center - rad).mid(), (center + rad).mid() for i, a in enumerate(polys): # color palette copied from sage.plot.plot.plot color = plot.Color((0.66666 + i * 0.61803) % 1, 1, 0.4, space='hsl') Balls = a.pol.base_ring() g += plot.plot(lambda x: a.pol(Balls(x)).mid(), xrange, color=color) g += plot.text(str(a.prec), (center, a.pol(center).mid()), color=color) for point, ini in self._inivecs.iteritems(): g += plot.point2d((point, 0), size=50) return g
def triangulation_render_2d(triangulation, **kwds): r""" Return a graphical representation of a 2-d triangulation. INPUT: - ``triangulation`` -- a :class:`Triangulation`. - ``**kwds`` -- keywords that are passed on to the graphics primitives. OUTPUT: A 2-d graphics object. EXAMPLES:: sage: points = PointConfiguration([[0,0],[0,1],[1,0],[1,1],[-1,-1]]) sage: triang = points.triangulate() sage: triang.plot(axes=False, aspect_ratio=1) # indirect doctest Graphics object consisting of 12 graphics primitives """ from sage.plot.all import point2d, line2d, arrow, polygon2d points = [point.reduced_affine() for point in triangulation.point_configuration()] coord = [[p[0], p[1]] for p in points] plot_points = sum([point2d(p, zorder=2, pointsize=10, **kwds) for p in coord]) tmp_lines = [] for t in triangulation: if len(t) >= 2: tmp_lines.append([t[0], t[1]]) if len(t) >= 3: tmp_lines.append([t[0], t[2]]) tmp_lines.append([t[1], t[2]]) all_lines = [] interior_lines = [] for l in tmp_lines: if l not in all_lines: all_lines.append(l) else: interior_lines.append(l) exterior_lines = [l for l in all_lines if not l in interior_lines] plot_interior_lines = sum( [line2d([coord[l[0]], coord[l[1]]], zorder=1, rgbcolor=(0, 1, 0), **kwds) for l in interior_lines] ) plot_exterior_lines = sum( [line2d([coord[l[0]], coord[l[1]]], zorder=1, rgbcolor=(0, 0, 1), **kwds) for l in exterior_lines] ) plot_triangs = sum( [ polygon2d([coord[t[0]], coord[t[1]], coord[t[2]]], zorder=0, rgbcolor=(0.8, 1, 0.8), **kwds) for t in triangulation if len(t) >= 3 ] ) return plot_points + plot_interior_lines + plot_exterior_lines + plot_triangs
def triangulation_render_2d(triangulation, **kwds): r""" Return a graphical representation of a 2-d triangulation. INPUT: - ``triangulation`` -- a :class:`Triangulation`. - ``**kwds`` -- keywords that are passed on to the graphics primitives. OUTPUT: A 2-d graphics object. EXAMPLES:: sage: points = PointConfiguration([[0,0],[0,1],[1,0],[1,1],[-1,-1]]) sage: triang = points.triangulate() sage: triang.plot(axes=False, aspect_ratio=1) # indirect doctest Graphics object consisting of 12 graphics primitives """ from sage.plot.all import point2d, line2d, arrow, polygon2d points = [ point.reduced_affine() for point in triangulation.point_configuration() ] coord = [ [p[0], p[1]] for p in points ] plot_points = sum([ point2d(p, zorder=2, pointsize=10, **kwds) for p in coord ]) tmp_lines = [] for t in triangulation: if len(t)>=2: tmp_lines.append([t[0], t[1]]) if len(t)>=3: tmp_lines.append([t[0], t[2]]) tmp_lines.append([t[1], t[2]]) all_lines = [] interior_lines = [] for l in tmp_lines: if l not in all_lines: all_lines.append(l) else: interior_lines.append(l) exterior_lines = [ l for l in all_lines if not l in interior_lines ] plot_interior_lines = sum([ line2d([ coord[l[0]], coord[l[1]] ], zorder=1, rgbcolor=(0,1,0), **kwds) for l in interior_lines ]) plot_exterior_lines = sum([ line2d([ coord[l[0]], coord[l[1]] ], zorder=1, rgbcolor=(0,0,1), **kwds) for l in exterior_lines ]) plot_triangs = sum([ polygon2d([coord[t[0]], coord[t[1]], coord[t[2]]], zorder=0, rgbcolor=(0.8, 1, 0.8), **kwds) for t in triangulation if len(t)>=3 ]) return \ plot_points + \ plot_interior_lines + plot_exterior_lines + \ plot_triangs
def render_points_2d(self, **kwds): """ Return the points of a polyhedron in 2d. EXAMPLES:: sage: hex = polytopes.regular_polygon(6) sage: proj = hex.projection() sage: hex_points = proj.render_points_2d() sage: hex_points._objects [Point set defined by 6 point(s)] """ return point2d(self.coordinates_of(self.points), **kwds)
def plot(self, disks=False, **kwds): gr = plot.point2d(self.dop._singularities(CC), marker='*', color='red', **kwds) gr += plot.line([z.iv().mid() for z in self.vert]) gr.set_aspect_ratio(1) if disks: for step in self: z = step.start.iv().mid() gr += plot.circle((z.real(), z.imag()), step.start.dist_to_sing().lower(), linestyle='dotted', color='red') gr += plot.circle((z.real(), z.imag()), step.length().lower(), linestyle='dashed') return gr
def plot(self, disks=False): gr = plot.point2d(dop_singularities(self.dop, CC), marker='*', size=200, color='red') for step in self: gr += step.plot() gr.set_aspect_ratio(1) if disks: for step in self: z = step.start.iv().mid() gr += plot.circle((z.real(), z.imag()), step.start.dist_to_sing().lower(), linestyle='dotted', color='red') gr += plot.circle((z.real(), z.imag()), step.length().lower(), linestyle='dashed') return gr
def plot_completely_periodic(self): from sage.plot.all import polygon2d, Graphics, point2d, text O = self.orbit G = [] u = self.u # direction (that we put horizontal) m = matrix(2, [u[1], -u[0], u[1], u[0]]) indices = {} xmin = xmax = ymin = ymax = 0 for comp in self.decomposition.components(): H = Graphics() x = O.V2._isomorphic_vector_space.zero() pts = [x] below = True for p in comp.perimeter(): sc = p.saddleConnection() y = x + m * O.V2._isomorphic_vector_space( O.V2(p.saddleConnection().vector())) if p.vertical(): if sc in indices: i = indices[sc] else: i = len(indices) // 2 indices[sc] = i indices[-sc] = i if below: H += text(str(i), (x + y) / 2, color='black') x = y xmin = min(xmin, x[0]) xmax = max(xmax, x[0]) ymin = min(ymin, x[1]) ymax = max(ymax, x[1]) pts.append(x) H += polygon2d(pts, color='blue', alpha=0.3) H += point2d(pts, color='red', pointsize=20) G.append(H) aspect_ratio = float(xmax - xmin) / float(ymax - ymin) for H in G: H.set_axes_range(xmin, xmax, ymin, ymax) H.axes(False) H.set_aspect_ratio(aspect_ratio) return G