The following is a small snippet illustrating the problem with the cube size used in an Axes3D instance from matplotlib and trimming axis labels. Although I can easily change the background color on the figure, it still leads to distortion of the text located on the labels. Does anyone have an idea of ββhow best to resize the actual size of the 3D window used to build the data? Just resizing the subtitle doesn't seem to help. This best illustrates code execution. After plotting, the date-formatted text changes in color, and one end becomes a little darker. Any help is appreciated.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as dates
import datetime, random
import matplotlib.ticker as ticker
def random_date():
date = datetime.date(2008, 12,01)
while 1:
date += datetime.timedelta(days=30)
yield (date)
def format_date(x, pos=None):
return dates.num2date(x).strftime('%Y-%m-%d')
r_d = random_date()
some_dates = [dates.date2num(r_d.next()) for i in range(0,20)]
fig = plt.figure(facecolor = 'k')
ax = fig.add_subplot(111, projection='3d')
fig.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9)
for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
xs = np.array(some_dates)
ys = np.random.rand(20)
ax.bar(xs, ys, zs=z, zdir='y', color=c, alpha=0.8,width=8)
ax.w_xaxis.set_major_locator(ticker.FixedLocator(some_dates))
ax.w_xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
for tl in ax.w_xaxis.get_ticklabels():
tl.set_ha('right')
tl.set_rotation(30)
ax.set_ylabel('Series')
ax.set_zlabel('Amount')
plt.show()
source
share