few changes for nate:

1) cosmetic - removing visibility of meta axes except for the tick labels.
2) unless subticklabels defined, don't do meta axes. (instead of assuming if you have 3D graph, do meta axes)

--HG--
extra : convert_revision : 396011ffaa51ea4066b34257f6fd5b3faac9d242
This commit is contained in:
Lisa Hsu 2006-02-18 20:10:42 -05:00
parent 6cf0ba8495
commit a611b81003

View file

@ -31,6 +31,7 @@ import matplotlib, pylab
from matplotlib.font_manager import FontProperties from matplotlib.font_manager import FontProperties
from matplotlib.numerix import array, arange, reshape, shape, transpose, zeros from matplotlib.numerix import array, arange, reshape, shape, transpose, zeros
from matplotlib.numerix import Float from matplotlib.numerix import Float
from matplotlib.ticker import NullLocator
matplotlib.interactive(False) matplotlib.interactive(False)
@ -120,15 +121,11 @@ class BarChart(ChartOptions):
if self.chartdata is None: if self.chartdata is None:
raise AttributeError, "Data not set for bar chart!" raise AttributeError, "Data not set for bar chart!"
need_subticks = True
dim = len(shape(self.inputdata)) dim = len(shape(self.inputdata))
cshape = shape(self.chartdata) cshape = shape(self.chartdata)
print cshape
if dim == 1: if dim == 1:
colors = self.gen_colors(cshape[2]) colors = self.gen_colors(cshape[2])
colors = [ [ colors ] * cshape[1] ] * cshape[0] colors = [ [ colors ] * cshape[1] ] * cshape[0]
need_subticks = False
if dim == 2: if dim == 2:
colors = self.gen_colors(cshape[0]) colors = self.gen_colors(cshape[0])
@ -144,15 +141,19 @@ class BarChart(ChartOptions):
outer_axes = None outer_axes = None
inner_axes = None inner_axes = None
if need_subticks: if self.xsubticks is not None:
self.metaaxes = self.figure.add_axes(self.figure_size) color = self.figure.get_facecolor()
self.metaaxes = self.figure.add_axes(self.figure_size, axisbg=color, frameon=False)
for tick in self.metaaxes.xaxis.majorTicks:
tick.tick1On = False
tick.tick2On = False
self.metaaxes.set_yticklabels([]) self.metaaxes.set_yticklabels([])
self.metaaxes.set_yticks([]) self.metaaxes.set_yticks([])
size = [0] * 4 size = [0] * 4
size[0] = self.figure_size[0] size[0] = self.figure_size[0]
size[1] = self.figure_size[1] + .075 size[1] = self.figure_size[1] + .05
size[2] = self.figure_size[2] size[2] = self.figure_size[2]
size[3] = self.figure_size[3] - .075 size[3] = self.figure_size[3] - .05
self.axes = self.figure.add_axes(size) self.axes = self.figure.add_axes(size)
outer_axes = self.metaaxes outer_axes = self.metaaxes
inner_axes = self.axes inner_axes = self.axes
@ -202,10 +203,12 @@ class BarChart(ChartOptions):
if self.xticks is not None: if self.xticks is not None:
outer_axes.set_xticks(arange(cshape[2]) + .5) outer_axes.set_xticks(arange(cshape[2]) + .5)
outer_axes.set_xticklabels(self.xticks) outer_axes.set_xticklabels(self.xticks)
if self.xsubticks is not None: if self.xsubticks is not None:
inner_axes.set_xticks(arange((cshape[0] + 1)*cshape[2])*width + 2*center) inner_axes.set_xticks(arange((cshape[0] + 1)*cshape[2])*width + 2*center)
self.xsubticks.append('') self.xsubticks.append('')
inner_axes.set_xticklabels(self.xsubticks * cshape[2], fontsize=8) inner_axes.set_xticklabels(self.xsubticks * cshape[2], fontsize=8)
if self.legend is not None: if self.legend is not None:
if dim == 1: if dim == 1:
lbars = bars[0][0] lbars = bars[0][0]
@ -279,7 +282,7 @@ if __name__ == '__main__':
chart1.xticks = [ 'xtick%d' % x for x in xrange(myshape[0]) ] chart1.xticks = [ 'xtick%d' % x for x in xrange(myshape[0]) ]
chart1.title = 'this is the title' chart1.title = 'this is the title'
chart1.figure_size = [0.1, 0.2, 0.7, 0.85 ] chart1.figure_size = [0.1, 0.2, 0.7, 0.85 ]
if len(myshape) > 1: if len(myshape) > 2:
chart1.xsubticks = [ '%d' % x for x in xrange(myshape[1]) ] chart1.xsubticks = [ '%d' % x for x in xrange(myshape[1]) ]
chart1.graph() chart1.graph()
chart1.savefig('/tmp/test1.png') chart1.savefig('/tmp/test1.png')