|
From: Sterling S. <sm...@fu...> - 2013-10-15 17:44:38
|
Nils,
Here is a version that runs through. It produces two different versions of your graph: one with the colors corresponding to the index of the arrays, the other with the colors corresponding to the value of the histogram. I hope this helps.
-Sterling
{{{
import re
import os
import sys
import gzip
import numpy as np
import matplotlib.pyplot as plt
import glob
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.colors as colors
import matplotlib.cm as cmx
efratio = np.loadtxt('efratio-10.dat.gz')
hist,bin_edges = np.histogram(efratio,bins=100,range=(0.,1.),density=False)
width = 0.7*(bin_edges[1]-bin_edges[0])
center = (bin_edges[:-1]+bin_edges[1:])/2
coolwarm = cm = plt.get_cmap('coolwarm')
values = range(100)
for normed in [values,hist]:
cNorm = colors.Normalize(vmin=0, vmax=max(normed))
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=coolwarm)
colours = []
for value in normed:
colorVal = scalarMap.to_rgba(value)
colours.append(colorVal)
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
heatmap = ax.bar(center, hist, zs=1, zdir='y', align = 'center', width = width,color=colours,linewidth=0)
scalarMap.set_array(normed)
plt.colorbar(scalarMap,ax=ax)
plt.show()
}}}
On Oct 14, 2013, at 6:12AM, Nils Wagner wrote:
> Here is a self contained version.
>
> Nils
>
>
>
>
> On Fri, Oct 11, 2013 at 4:33 PM, Sterling Smith <sm...@fu...> wrote:
> Nils,
>
> I tried to run your example, but there are some variables which are undefined. Can you post a self contained revision of your example?
>
> -Sterling
>
> On Oct 11, 2013, at 1:34AM, Nils Wagner wrote:
>
> > plt.colorbar(scalarMap,ax=ax) results in
> >
> > cm.py", line 309, in autoscale_None
> > raise TypeError('You must first set_array for mappable')
> > TypeError: You must first set_array for mappable
> >
> > Nils
> >
> >
> >
> > On Fri, Oct 11, 2013 at 9:51 AM, Eric Firing <ef...@ha...> wrote:
> > On 2013/10/10 8:52 PM, Nils Wagner wrote:
> > > Hi all,
> > >
> > > I tried to add a colorbar to a bar plot
> > >
> > > coolwarm = cm = plt.get_cmap('coolwarm')
> > > values = range(100)
> > > cNorm = colors.Normalize(vmin=0, vmax=values[-1])
> > > scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=coolwarm)
> > > colours = []
> > > for value in values:
> > > colorVal = scalarMap.to_rgba(value)
> > > colours.append(colorVal)
> > >
> > > fig = plt.figure()
> > > ax = fig.add_subplot(111,projection='3d')
> > > hist,bin_edges = np.histogram(efratio,bins=100,range=(0.,1.),density=False)
> > > width = 0.7*(bin_edges[1]-bin_edges[0])
> > > center = (bin_edges[:-1]+bin_edges[1:])/2
> > > heatmap = ax.bar(center, hist, zs=z, zdir='y', align = 'center', width =
> > > width,color=colours)
> > > plt.colorbar(heatmap)
> > >
> > >
> > >
> > >
> > >
> > > mappable.autoscale_None() # Ensure mappable.norm.vmin, vmax
> > > AttributeError: 'BarContainer' object has no attribute 'autoscale_None'
> >
> > This is because it is not an instance of ScalarMappable, which is what
> > colorbar() requires as its argument.
> > >
> > > How can I fix the problem ?
> >
> > Use scalarMap as the argument instead of heatmap. I think you will need
> > to provide either the cax or the ax kwarg in addition.
> >
> > examples/api/colorbar_only.py might also be helpful.
> >
> > Eric
> > >
> > > Nils
> > >
> > >
> > >
> > > ------------------------------------------------------------------------------
> > > October Webinars: Code for Performance
> > > Free Intel webinars can help you accelerate application performance.
> > > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> > > the latest Intel processors and coprocessors. See abstracts and register >
> > > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
> > >
> > >
> > >
> > > _______________________________________________
> > > Matplotlib-users mailing list
> > > Mat...@li...
> > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> > >
> >
> >
> > ------------------------------------------------------------------------------
> > October Webinars: Code for Performance
> > Free Intel webinars can help you accelerate application performance.
> > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> > the latest Intel processors and coprocessors. See abstracts and register >
> > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
> > _______________________________________________
> > Matplotlib-users mailing list
> > Mat...@li...
> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> >
> > ------------------------------------------------------------------------------
> > October Webinars: Code for Performance
> > Free Intel webinars can help you accelerate application performance.
> > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> > the latest Intel processors and coprocessors. See abstracts and register >
> > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk_______________________________________________
> > Matplotlib-users mailing list
> > Mat...@li...
> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
> <efratio-9.dat.gz><test.py>
|