From 83d3cf546a9be70b6b71527eb02e3a442fe9bb41 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Thu, 4 Jan 2018 01:33:40 -0800 Subject: [PATCH] Allow mplot3d rasterization; adjacent cleanups. --- lib/mpl_toolkits/mplot3d/art3d.py | 9 +++------ lib/mpl_toolkits/mplot3d/axes3d.py | 2 ++ lib/mpl_toolkits/mplot3d/axis3d.py | 13 ++++++------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index 86642b0475f9..5fc62ad89beb 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -107,6 +107,7 @@ def set_3d_properties(self, z=0, zdir='z'): self._dir_vec = get_dir_vector(zdir) self.stale = True + @artist.allow_rasterization def draw(self, renderer): proj = proj3d.proj_trans_points( [self._position3d, self._position3d + self._dir_vec], renderer.M) @@ -155,6 +156,7 @@ def set_3d_properties(self, zs=0, zdir='z'): self._verts3d = juggle_axes(xs, ys, zs, zdir) self.stale = True + @artist.allow_rasterization def draw(self, renderer): xs3d, ys3d, zs3d = self._verts3d xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M) @@ -257,6 +259,7 @@ def do_3d_projection(self, renderer): minz = min(minz, min(zs)) return minz + @artist.allow_rasterization def draw(self, renderer, project=False): if project: self.do_3d_projection(renderer) @@ -302,9 +305,6 @@ def do_3d_projection(self, renderer): self._facecolor2d = self._facecolor3d return min(vzs) - def draw(self, renderer): - Patch.draw(self, renderer) - class PathPatch3D(Patch3D): """ @@ -729,9 +729,6 @@ def get_facecolor(self): def get_edgecolor(self): return self._edgecolors2d - def draw(self, renderer): - return Collection.draw(self, renderer) - def poly_collection_2d_to_3d(col, zs=0, zdir='z'): """Convert a PolyCollection to a Poly3DCollection object.""" diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index ba4c8cf1e743..1bd3cf7c0a25 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -21,6 +21,7 @@ import numpy as np +from matplotlib import artist import matplotlib.axes as maxes import matplotlib.cbook as cbook import matplotlib.collections as mcoll @@ -250,6 +251,7 @@ def tunit_edges(self, vals=None, M=None): (tc[7], tc[4])] return edges + @artist.allow_rasterization def draw(self, renderer): # draw the background patch self.patch.draw(renderer) diff --git a/lib/mpl_toolkits/mplot3d/axis3d.py b/lib/mpl_toolkits/mplot3d/axis3d.py index 4093e9bd81e0..4bfe8facbe46 100644 --- a/lib/mpl_toolkits/mplot3d/axis3d.py +++ b/lib/mpl_toolkits/mplot3d/axis3d.py @@ -7,13 +7,11 @@ import six -import math import copy -from matplotlib import lines as mlines, axis as maxis, patches as mpatches -from matplotlib import rcParams -from . import art3d -from . import proj3d +from matplotlib import ( + artist, lines as mlines, axis as maxis, patches as mpatches, rcParams) +from . import art3d, proj3d import numpy as np @@ -222,6 +220,7 @@ def draw_pane(self, renderer): renderer.close_group('pane3d') + @artist.allow_rasterization def draw(self, renderer): self.label._transform = self.axes.transData renderer.open_group('axis3d') @@ -299,7 +298,7 @@ def draw(self, renderer): renderer.M) self.label.set_position((tlx, tly)) if self.get_rotate_label(self.label.get_text()): - angle = art3d.norm_text_angle(math.degrees(math.atan2(dy, dx))) + angle = art3d.norm_text_angle(np.rad2deg(np.arctan2(dy, dx))) self.label.set_rotation(angle) self.label.set_va(info['label']['va']) self.label.set_ha(info['label']['ha']) @@ -322,7 +321,7 @@ def draw(self, renderer): pos[0], pos[1], pos[2], renderer.M) self.offsetText.set_text(self.major.formatter.get_offset()) self.offsetText.set_position((olx, oly)) - angle = art3d.norm_text_angle(math.degrees(math.atan2(dy, dx))) + angle = art3d.norm_text_angle(np.rad2deg(np.arctan2(dy, dx))) self.offsetText.set_rotation(angle) # Must set rotation mode to "anchor" so that # the alignment point is used as the "fulcrum" for rotation. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy