Niestety to nie wydaje się być narażone. Patrząc na źródło, kluczową zmienną wewnętrzną jest wywołanie _AXINFO
, które możemy przesłonić ostrożną podklasą.
Dodaj ten kod po utworzeniu rysunku, a styl to z dict custom_AXINFO
:
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d.axis3d as axis3d
# New axis settings
custom_AXINFO = {
'x': {'i': 0, 'tickdir': 1, 'juggled': (1, 0, 2),
'color': (0.00, 0.00, 0.25, .75)},
'y': {'i': 1, 'tickdir': 0, 'juggled': (0, 1, 2),
'color': (0.20, 0.90, 0.90, 0.25)},
'z': {'i': 2, 'tickdir': 0, 'juggled': (0, 2, 1),
'color': (0.925, 0.125, 0.90, 0.25)},}
class custom_XAxis(axis3d.Axis):
_AXINFO = custom_AXINFO
class custom_YAxis(axis3d.Axis):
_AXINFO = custom_AXINFO
class custom_ZAxis(axis3d.Axis):
_AXINFO = custom_AXINFO
class custom_Axes3D(Axes3D):
def _init_axis(self):
'''Init 3D axes; overrides creation of regular X/Y axes'''
self.w_xaxis = custom_XAxis('x', self.xy_viewLim.intervalx,
self.xy_dataLim.intervalx, self)
self.xaxis = self.w_xaxis
self.w_yaxis = custom_YAxis('y', self.xy_viewLim.intervaly,
self.xy_dataLim.intervaly, self)
self.yaxis = self.w_yaxis
self.w_zaxis = custom_ZAxis('z', self.zz_viewLim.intervalx,
self.zz_dataLim.intervalx, self)
self.zaxis = self.w_zaxis
for ax in self.xaxis, self.yaxis, self.zaxis:
ax.init3d()
# The rest of your code below, note the call to our new custom_Axes3D
points = (5*np.random.randn(3, 50)+np.tile(np.arange(1,51), (3, 1))).transpose()
fig = plt.figure(figsize = (10,10))
ax = custom_Axes3D(fig)
To jest małpa-łatanie na to najgorszy i nie powinny być powołane do pracować dla późniejszych wersji.
Naprawianie kolorów jest łatwiejsze niż linii siatki, ponieważ wymaga to zastąpienia jednej z metod __init__
, choć można to zrobić przy większej ilości pracy.
Wydaje się, że nie wydaje się to trudne dla użytkownika końcowego i dlatego mogę sobie wyobrazić, że można to naprawić w późniejszych wersjach.
Wygląda na to, że teraz możesz zrobić ax.w_xaxis.plane.set_color ((1,0,0)); ax.w_xaxis.plane.set_alpha (0,5). Wygląda na to, że ignoruje kanał alfa w set_color, ale używa go w set_alpha. – Ben