Hi Everyone, I'm struggling to understand how to put the highest value on the ticks of a colorbar. My problem is that the highest value is simply not there, and it looks weird ... I would be happy to solve this issue.
See what my code produces, http://yfrog.com/j9wrongip And here is how I want it to be: http://yfrog.com/2pcorrectsp And of course here is my code: from pylab import * import numpy as N from matplotlib.ticker import FuncFormatter, ScalarFormatter a=ScalarFormatter(useOffset=True, useMathText=False) a.set_scientific(True) def read_array2(filename, dtypes,lineskip=3, separator=' '): """ Read a file with an arbitrary number of columns. The type of data in each column is arbitrary It will be cast to the given dtype at runtime This is an improved function that also cleanes the data """ startFromLine = lineskip linesCounter = 1 cast = N.cast # a nice syntax to initialize a list with determine size data = [[] for dummy in xrange(len(dtypes))] for line in open(filename, 'r'): #print type(line) if linesCounter>startFromLine: fields = line.strip().split(separator) #clean double numbers because of minus signs for i, number in enumerate(fields): temp=number.split(" ") if len(temp)>1: #pdb.set_trace() del fields[i] for j, hold in enumerate(temp): #print j, hold #pdb.set_trace() fields.insert(i+j,hold) #print len(fields) del temp #remove trailing calvin degrees in fields for i, number in enumerate(fields): if number[-4]=='-': hold=number[:-4] del fields[i] fields.insert(i,hold) #split fields and append to data for i, number in enumerate(fields): data[i].append(number) #data[i].append(number) linesCounter=linesCounter+1 #cast data to a nice array #pdb.set_trace() for i in xrange(len(dtypes)): data[i] = cast[dtypes[i]](data[i]) return N.rec.array(data, dtype=dtypes) def readTechPlotHeader(fileName): ''' This function reads a Techplot file header format. It returns a list which can be used in other functions, to visualize techplot file format data using Python. the function takes in a file name. ''' fileObject=open(fileName, 'r') fileObject.next() header=fileObject.next() #remove the expresions 'variables = ' and '\n' header=header[12:-1] headerCopy=header #remove all commas, and convert to list header=header.strip().split(',') for x in xrange(len(header)): header[x]=header[x].strip(' ') header[x]=(header[x].strip("\""),'float32') fileObject.close() return header, headerCopy gsp_descr2,headerCopy=readTechPlotHeader('dedo2d_0.gsv') print gsp_descr2 gsp_descr2=N.dtype(gsp_descr2) data = read_array2('dedo2d_0.gsv', gsp_descr2) x,y,dolomite,calcite=data["x"],data["y"],data["dolomite"],data["calcite"] x=N.unique(x) y=N.unique(y) fig = plt.figure(1,figsize=(10, 6)) ax1 = fig.add_subplot(111) x=N.unique(x) y=N.unique(y) print max(dolomite) calcites=resize(calcite,(y.size,x.size)) dolomites=resize(dolomite,(y.size,x.size)) CS=ax1.pcolormesh(x,y,dolomites) ax1.set_title("dolomite [phi]") cbar = fig.colorbar(CS,ticks=[0, 0.0001, 0.00015, 0.0002]) cbar.ax.set_yticklabels(["lo", "med", "hi",'missing']) grid(True, which='minor') from matplotlib.ticker import MultipleLocator, FormatStrFormatter minorLocator = MultipleLocator(1.0) ax1.yaxis.set_minor_locator(minorLocator) ax1.xaxis.set_minor_locator(minorLocator) ax1.set_title("dolomite [phi]") savefig('minerals1.png',papertype='a4', orientation='landscape')#,bbox_inches='tight') show() The correct image is produced with: import numpy as NP from matplotlib import pyplot as PLT A = NP.random.random_integers(0, 2, 100).reshape(10, 10) print A A=A/10000.0 print A fig = PLT.figure() ax1 = fig.add_subplot(111) cax = ax1.pcolormesh(A)#, interpolation="nearest") # set the tickmarks *if* you want cutom (ie, arbitrary) tick labels: cbar = fig.colorbar(cax, ticks=[0, 0.0001, 0.0002]) # note: 'ax' is not the same as the 'axis' instance created by calling 'add_subplot' # the latter instance i bound to the variable 'ax1' to avoid confusing the two cbar.ax.set_yticklabels(["lo", "med", "hi"]) PLT.show() Thanks in advance, (If someone needs, I can directly send the data files, they are not to big, but I wanted to spare them from the list) -- Oz Nahum Graduate Student Zentrum für Angewandte Geologie Universität Tübingen --- Imagine there's no countries it isn't hard to do Nothing to kill or die for And no religion too Imagine all the people Living life in peace
------------------------------------------------------------------------------ This SF.net email is sponsored by Make an app they can't live without Enter the BlackBerry Developer Challenge http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users