yet another plot problem!
Dear yt folks.... This is probably a straightup matplotlib question and not a yt question, but....it was working until I got to the colorbar, and I am now confused. Thanks for any help... kathy here is the code: from yt.imods import * import matplotlib as mpl import matplotlib.pyplot as plt #import matplotlib.colorbar as cb from matplotlib.colors import LogNorm #import numpy as np ts = TimeSeriesData.from_filenames("Strat_Box_hdf5_plt_cnt_01*") padding = 0.05 nx = 5 #number of time series images, plus will need space for vertical colorbar ny = 1 #might want to change this later! #Assuming that all images are the same shape and size width = nx +1 #I think this is inches, not sure height = 4 fig = plt.figure(figsize=(width,height),frameon=False) #Trying to save 0.91 to 0.95 horizontally for the colorbar sizex = 0.85/nx sizey = 0.90/ny haxes = [] for j in range(ny): haxes.append([]) for i in range(nx): left = padding + i*sizex bottom = padding + j*sizey ax = fig.add_axes([left, bottom, sizex, sizey],frameon=False) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) haxes[-1].append(ax) cax = fig.add_axes([0.9, 0.05, 0.04, sizey],frameon=False) cax.xaxis.set_visible(False) cax.yaxis.set_visible(False) for i, pf in enumerate(ts): sl = pf.h.slice(0, pf.domain_center[0],fields=["Density","Temperature"] ) frb = sl.to_frb( (1.0, 'kpc'), (4096,1024),height=(4.0, 'kpc')) dens_axes = [haxes[0][i]] plots = [dens_axes[0].imshow(frb["Density"], origin='lower', norm=LogNorm())] title=[r'$\mathrm{Density}\ (\mathrm{g\ cm^{-3}})$'] orient = 'vertical' cbar = fig.colorbar(plots,cax=cax, orientation=orient) cbar.set_label(title) fig.savefig('ts_test') Here are the errors: --------------------------------------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-7-e0dcab3d98fe> in <module>() 2 orient = 'vertical' 3 ----> 4 cbar = fig.colorbar(plots,cax=cax, orientation=orient) 5 cbar.set_label(title) 6 /Users/kde/yt-x86_64/lib/python2.7/site-packages/matplotlib-1.3.0-py2.7-macosx-10.4-x86_64.egg/matplotlib/figure.pyc in colorbar(self, mappable, cax, ax, use_gridspec, **kw) 1449 cax, kw = cbar.make_axes(ax, **kw) 1450 cax.hold(True)-> 1451 cb = cbar.colorbar_factory(cax, mappable, **kw) 1452 1453 self.sca(current_ax) /Users/kde/yt-x86_64/lib/python2.7/site-packages/matplotlib-1.3.0-py2.7-macosx-10.4-x86_64.egg/matplotlib/colorbar.pyc in colorbar_factory(cax, mappable, **kwargs) 1272 cb = ColorbarPatch(cax, mappable, **kwargs) 1273 else:-> 1274 cb = Colorbar(cax, mappable, **kwargs) 1275 1276 mappable.callbacksSM.connect('changed', cb.on_mappable_changed) /Users/kde/yt-x86_64/lib/python2.7/site-packages/matplotlib-1.3.0-py2.7-macosx-10.4-x86_64.egg/matplotlib/colorbar.pyc in __init__(self, ax, mappable, **kw) 850 # Ensure the given mappable's norm has appropriate vmin and vmax set 851 # even if mappable.draw has not yet been called.--> 852 mappable.autoscale_None() 853 854 self.mappable = mappable AttributeError: 'list' object has no attribute 'autoscale_None' -- Kathy DeGioia Eastwood, Ph.D. Professor of Physics and Astronomy Northern Arizona University Flagstaff, AZ 86011-6010 Ph: 928-523-7159 FX: 928-523-1371 Kathy.Eastwood@nau.edu deliveries: 602 S. Humphreys St., Bldg 19 Rm 2
Hi Kathy, It looks like the problem is that "plots" is a list, but the call to colorbar is expecting an actual plot object. I think you can fix this by changing plots to plots[0], as in: cbar = fig.colorbar(plots[0],cax=cax, orientation=orient) Britton On Mon, Feb 3, 2014 at 4:01 PM, Kathy Eastwood <kathy.eastwood@nau.edu>wrote:
Dear yt folks....
This is probably a straightup matplotlib question and not a yt question, but....it was working until I got to the colorbar, and I am now confused. Thanks for any help... kathy
here is the code:
from yt.imods import * import matplotlib as mpl import matplotlib.pyplot as plt #import matplotlib.colorbar as cb from matplotlib.colors import LogNorm #import numpy as np
ts = TimeSeriesData.from_filenames("Strat_Box_hdf5_plt_cnt_01*")
padding = 0.05 nx = 5 #number of time series images, plus will need space for vertical colorbar ny = 1 #might want to change this later! #Assuming that all images are the same shape and size
width = nx +1 #I think this is inches, not sure height = 4 fig = plt.figure(figsize=(width,height),frameon=False)
#Trying to save 0.91 to 0.95 horizontally for the colorbar sizex = 0.85/nx sizey = 0.90/ny
haxes = []
for j in range(ny): haxes.append([]) for i in range(nx): left = padding + i*sizex bottom = padding + j*sizey ax = fig.add_axes([left, bottom, sizex, sizey],frameon=False) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) haxes[-1].append(ax)
cax = fig.add_axes([0.9, 0.05, 0.04, sizey],frameon=False) cax.xaxis.set_visible(False) cax.yaxis.set_visible(False)
for i, pf in enumerate(ts): sl = pf.h.slice(0, pf.domain_center[0],fields=["Density","Temperature"] ) frb = sl.to_frb( (1.0, 'kpc'), (4096,1024),height=(4.0, 'kpc')) dens_axes = [haxes[0][i]] plots = [dens_axes[0].imshow(frb["Density"], origin='lower', norm=LogNorm())]
title=[r'$\mathrm{Density}\ (\mathrm{g\ cm^{-3}})$'] orient = 'vertical'
cbar = fig.colorbar(plots,cax=cax, orientation=orient) cbar.set_label(title) fig.savefig('ts_test')
Here are the errors:
--------------------------------------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-7-e0dcab3d98fe> in <module>() 2 orient = 'vertical' 3 ----> 4 cbar = fig.colorbar(plots,cax=cax, orientation=orient) 5 cbar.set_label(title) 6 /Users/kde/yt-x86_64/lib/python2.7/site-packages/matplotlib-1.3.0-py2.7-macosx-10.4-x86_64.egg/matplotlib/figure.pyc in colorbar(self, mappable, cax, ax, use_gridspec, **kw) 1449 cax, kw = cbar.make_axes(ax, **kw) 1450 cax.hold(True)-> 1451 cb = cbar.colorbar_factory(cax, mappable, **kw) 1452 1453 self.sca(current_ax) /Users/kde/yt-x86_64/lib/python2.7/site-packages/matplotlib-1.3.0-py2.7-macosx-10.4-x86_64.egg/matplotlib/colorbar.pyc in colorbar_factory(cax, mappable, **kwargs) 1272 cb = ColorbarPatch(cax, mappable, **kwargs) 1273 else:-> 1274 cb = Colorbar(cax, mappable, **kwargs) 1275 1276 mappable.callbacksSM.connect('changed', cb.on_mappable_changed) /Users/kde/yt-x86_64/lib/python2.7/site-packages/matplotlib-1.3.0-py2.7-macosx-10.4-x86_64.egg/matplotlib/colorbar.pyc in __init__(self, ax, mappable, **kw) 850 # Ensure the given mappable's norm has appropriate vmin and vmax set 851 # even if mappable.draw has not yet been called.--> 852 mappable.autoscale_None() 853 854 self.mappable = mappable AttributeError: 'list' object has no attribute 'autoscale_None'
-- Kathy DeGioia Eastwood, Ph.D. Professor of Physics and Astronomy Northern Arizona University Flagstaff, AZ 86011-6010 Ph: 928-523-7159 FX: 928-523-1371 Kathy.Eastwood@nau.edu deliveries: 602 S. Humphreys St., Bldg 19 Rm 2
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
participants (2)
-
Britton Smith
-
Kathy Eastwood