예제 #1
0
	def configure_matplotlib(self):
		mplrc('savefig', dpi=float(self.figure_resolution_le.text()))
		mplrc('font', size=float(self.figure_font_size_le.text()))

		mplrc('text', usetex=self.use_latex_check_box.isChecked())
		mplrc('text.latex', unicode=True)
		mplrc('font', family='serif', serif='Computer Modern Roman')
예제 #2
0
import os
import numpy as np
from cycler import cycler
from numpy import random as rand
from matplotlib import pyplot, cm

from histogram import Histogram

from matplotlib import rc as mplrc
from histogram import rc as histrc

mplrc('patch', facecolor='steelblue')
mplrc(
    'axes',
    prop_cycle=cycler('color', [
        'steelblue', 'olive', 'darkred', 'goldenrod', 'salmon', 'plum', 'grey'
    ]),
    grid=True,
    facecolor='white',  # axes background color
)
mplrc('axes.formatter', limits=(-3, 4))
mplrc('image', cmap='cubehelix_r')

histrc.plot.baseline = 'left'

if not os.path.exists('test_images'):
    os.mkdir('test_images')


def test_plot_hist1d():
    npoints = 100000
예제 #3
0
style. This histogram is then smoothed using a Gaussian
filter and plotted as a line.
'''

from cycler import cycler
import numpy as np
from matplotlib import pyplot
from histogram import Histogram

from matplotlib import rc as mplrc
from histogram import rc as histrc

# interesting colors
mplrc(
    'axes',
    prop_cycle=cycler(
        'color',
        ['steelblue', 'olive', 'darkred', 'darkorchid', 'goldenrod', 'black']))

# default is alpha=0.6, but we want slightly lighter
# patches for overlaying many histograms
histrc.plot.patch.alpha = 0.5

np.random.seed(1)

hh = []
for mean in [2, 5, 7]:
    hh.append(Histogram(30, [0, 10], 'x (cm)', 'counts', 'Random Data'))
    hh[-1].fill(np.random.normal(mean, 1, 1000))

fig, ax = pyplot.subplots()
예제 #4
0
#
# Distributed under terms of the MIT license.
"""

"""
from joblib import Parallel, delayed
import matplotlib.gridspec as gridspec
import numpy as np
from lib import anisolib, fabricplotlib
from modeltools.lib import fastvtulib
from matplotlib.tri import Triangulation
import matplotlib.pyplot as plt
from glob import glob
from matplotlib import rc as mplrc

mplrc('font', **{'family': 'sans-serif', 'sans-serif': ['Linux Biolinum O']})

# import os

# from mpl_toolkits.axes_grid1.inset_locator import inset_axes

fs = 9
bfs = 12

name_fmt = 's_{:s}_rc{:s}_oop{:s}_bm{:s}'
name_dict = {
    'ftw': 'Converge\nupstream',
    'uc': 'Converge\neverywhere',
    'hiacc': 'High\naccumulation'
}
예제 #5
0
파일: sampleset.py 프로젝트: losalamos/matk
def hist(rc,ncols=4,figsize=None,alpha=0.2,title=None,tight=False,mins=None,maxs=None,frequency=False,bins=10,ylim=None,printout=True,labels=[],filename=None,fontsize=None,xticks=3):
    """ Plot histograms of dataset

        :param ncols: Number of columns in plot matrix
        :type ncols: int
        :param figsize: Width and height of figure in inches
        :type figsize: tuple(fl64,fl64)
        :param alpha: Histogram color shading
        :type alpha: float
        :param title: Title of plot
        :type title: str
        :param tight: Use matplotlib tight layout
        :type tight: bool
        :param mins: Minimum values of recarray fields
        :type mins: lst(fl64)
        :param maxs: Maximum values of recarray fields
        :type maxs: lst(fl64)
        :returns: dict(lst(int),lst(fl64)) - dictionary of histogram data (counts,bins) keyed by name
        :param frequency: If True, the first element of the return tuple will be the counts normalized by the length of data, i.e., n/len(x)
        :type frequency: bool
        :param bins: If an integer is given, bins + 1 bin edges are returned. Unequally spaced bins are supported if bins is a list of sequences for each histogram.
        :type bins: int or lst(lst(int))
        :param ylim: y-axis limits for histograms.
        :type ylim: tuples - 2 element tuple with y limits for histograms
        :param labels: Names to use instead of parameter names in plot
        :type labels: lst(str)
        :param filename: Name of file to save plot. File ending determines plot type (pdf, png, ps, eps, etc.). Plot types available depends on the matplotlib backend in use on the system. Plot will not be displayed.
        :type filename: str
        :param fontsize: Size of font 
        :type fontsize: fl64
        :param xticks: Number of ticks on xaxes
        :type xticks: int

    """        
    if plotflag:
        # Set font for scatterplot labels
        if not fontsize is None:
            font = {'size': fontsize}
            mplrc('font', **font)
        # Add axis labels to first column and last row
        if len(labels) == 0:
            labels = rc.dtype.names
        elif not len(labels) == len(rc.dtype.names):
            print "Error: number of labels does not match number of parameters"
            return
        smp_mins = numpy.min(rc.tolist(),axis=0)
        smp_maxs = numpy.max(rc.tolist(),axis=0)
        if mins is None: mins = smp_mins
        else:
            mins = [ smp_mins[i] if mins[i] is None else mins[i] for i in range(len(mins)) ]
        if maxs is None: maxs = smp_maxs
        else:
            maxs = [ smp_maxs[i] if maxs[i] is None else maxs[i] for i in range(len(maxs)) ]
        if numpy.any(numpy.isnan(rc.tolist())):
            print "Error: Nan values exist probably due to failed simulations. Use subset (e.g. subset([('obs','!=',numpy.nan)]) to remove"
            return
        siz = len(rc.dtype)
        if siz <= ncols:
            ncols = siz
            nrows = 1
        elif siz > ncols:
            nrows = int(numpy.ceil(float(siz)/ncols))
        else:
            nrows = 1
        if figsize is None:
            figsize = (ncols*3,nrows*3)
        fig = plt.figure(figsize=figsize)
        if mins is None: mins = numpy.min(rc.tolist(),axis=0)
        if maxs is None: maxs = numpy.max(rc.tolist(),axis=0)
        hist_dict = OrderedDict()
        ns = []
        ax = []
        for ind,nm,mi,ma,lb in zip(range(len(rc.dtype)),rc.dtype.names,mins,maxs,labels): 
            ax.append(plt.subplot(nrows,ncols,ind+1))
            if ind==0 or (ind)%ncols==0:
				if frequency: plt.ylabel('Frequency')
				else: plt.ylabel('Count')
            else: ax[-1].get_yaxis().set_visible(False)
            if frequency:
                n,b,patches = ax[-1].hist(rc[nm], range=[mi,ma], alpha=alpha, bins=bins, weights=numpy.ones(len(rc[nm])) / len(rc[nm]))
                hist_dict[nm] = (n,b,patches)
            else:
                n,b,patches = ax[-1].hist(rc[nm], range=[mi,ma], alpha=alpha, bins=bins)
                hist_dict[nm] = (n,b,patches)
            ax[-1].set_xlim([mi,ma])
            ns.append(n)
            plt.xlabel(lb)
            plt.locator_params(nbins=4)
            ax[-1].xaxis.set_major_locator(MaxNLocator(xticks))
        # Set ylims of histograms
        if ylim is None:
            ymax = max([max(n) for n in ns])
            for i in range(len(labels)):
                ax[i].set_ylim([0,ymax])
        else:
            for i in range(len(labels)):
                ax[i].set_ylim(ylim)
        if tight: 
            plt.tight_layout()
            if title:
                plt.subplots_adjust(top=0.925) 
        if title: plt.suptitle(title)
        if filename is None:
            plt.show()
        else:
            fmt = filename.split('.')[-1]
            plt.savefig(filename,format=fmt)
        if printout:
            for nm in hist_dict.keys():
                print '\n'
                print nm+':'
                if frequency: 
                    print ' Freq:',
                    flag=True
                    for n in hist_dict[nm][0]:
                        if flag: 
                            print '{:12.2f}'.format(n),
                            flag=False
                        else: print '{:8.2f}'.format(n),
                        #print '{:2f}'.format(n),
                else: 
                    print 'Count:',
                    flag=True
                    for n in hist_dict[nm][0]:
                        if flag:
                            print '{:12.0f}'.format(n),
                            flag=False
                        else:
                            print '{:8.0f}'.format(n),
                print '\n',
                print ' Bins:',
                flag=True
                for b in hist_dict[nm][1]:
                    if flag:
                        print '{:8.2g}'.format(b),
                        flag=False
                    else:
                        print '{:8.2g}'.format(b),
            print '\n'
        return hist_dict
    else:
        print "Matplotlib must be installed to plot histograms"
        return
예제 #6
0
파일: sampleset.py 프로젝트: losalamos/matk
def panels(rc, type='pearson', alpha=0.2, figsize=None, title=None, tight=False, symbol='.',fontsize=None,corrfontsize=None,ms=None,mins=None,maxs=None,frequency=False,bins=10,ylim=None,labels=[],filename=None,xticks=2,yticks=2):
    if plotflag:
        # Set font for scatterplot labels
        if not fontsize is None:
            font = {'size': fontsize}
            mplrc('font', **font)
        smp_mins = numpy.min(rc.tolist(),axis=0)
        smp_maxs = numpy.max(rc.tolist(),axis=0)
        if mins is None: mins = smp_mins
        else:
            mins = [ smp_mins[i] if mins[i] is None else mins[i] for i in range(len(mins)) ]
        if maxs is None: maxs = smp_maxs
        else:
            maxs = [ smp_maxs[i] if maxs[i] is None else maxs[i] for i in range(len(maxs)) ]
        if numpy.any(numpy.isnan(rc.tolist())):
            print "Error: Nan values exist probably due to failed simulations. Use subset (e.g. subset([('obs','!=',numpy.nan)]) to remove"
            return
        siz = len(rc.dtype)
        fig,ax = plt.subplots(siz,siz,figsize=figsize)
        ind = 1
        # Add axis labels to first column and last row
        if len(labels) == 0:
            labels = rc.dtype.names
        elif not len(labels) == len(rc.dtype.names):
            print "Error: number of labels does not match number of parameters"
            return
        for i,nm in enumerate(labels): 
            ax[i,0].set_ylabel(nm)
            ax[siz-1,i].set_xlabel(nm)        # Plot histograms in diagonal plots
        ns = []
        for i,nm in enumerate(rc.dtype.names): 
            if frequency:
                n,b,patches = ax[i,i].hist(rc[nm], alpha=alpha, range=(mins[i],maxs[i]), bins=bins, weights=numpy.ones(len(rc[nm])) / len(rc[nm]))
            else:
                n,b,patches = ax[i,i].hist(rc[nm], alpha=alpha, range=(mins[i],maxs[i]), bins=bins)
            ax[i,i].set_xlim([mins[i],maxs[i]])
            ns.append(n)
        # Set ylims of histograms
        if ylim is None:
            ymax = max([max(n) for n in ns])
            for i in range(len(rc.dtype)):
                ax[i,i].set_ylim([0,ymax])
        else:
            for i in range(len(rc.dtype)):
                ax[i,i].set_ylim(ylim)

        # Scatterplots in lower triangular matrix
        #if corrfontsize is None: corrfontsize = 2*siz
        for i,nm1 in enumerate(rc.dtype.names): 
            for j,nm2 in enumerate(rc.dtype.names): 
                if j<i:
                    ax[i,j].plot(rc[nm2],rc[nm1], symbol, ms=ms)
                    ax[i,j].axis([mins[j],maxs[j],mins[i],maxs[i]])
        # Print correlation coefficient in upper triangular matrix 
        corrcoef = corr(rc,rc,plot=False,printout=False)
        for i,nm1 in enumerate(rc.dtype.names): 
            for j,nm2 in enumerate(rc.dtype.names): 
                if j<i:
                    #ax[j,i].axis('off')
                    ax[j,i].text(0.5,0.5,str(numpy.round(corrcoef[j,i],2)),ha='center',va='center',size=corrfontsize,weight='bold')

        for i,nm1 in enumerate(rc.dtype.names): 
            for j,nm2 in enumerate(rc.dtype.names): 
                if j > 0:
                    ax[i,j].get_yaxis().set_visible(False)
                else:
                    ax[i,j].yaxis.set_major_locator(MaxNLocator(yticks))
                #    tk = ax[i,j].get_yticks()
                #    tk = [0.2*(tk[0]+tk[-1]),0.8*(tk[0]+tk[-1])]
                #    ax[i,j].set_yticks(tk)
                if i < len(rc.dtype)-1:
                    ax[i,j].get_xaxis().set_visible(False)
                else:
                    ax[i,j].xaxis.set_major_locator(MaxNLocator(xticks))
                #    tk = ax[i,j].get_xticks()
                #    tk = [0.2*(tk[0]+tk[-1]),0.8*(tk[0]+tk[-1])]
                #    ax[i,j].set_xticks(tk)

        if tight: 
            plt.tight_layout()
            if title:
                plt.subplots_adjust(top=0.925) 
        if title: plt.suptitle(title)
        if filename is None:
            plt.show()
        else:
            fmt = filename.split('.')[-1]
            plt.savefig(filename,format=fmt)
    else:
        print "Matplotlib must be installed to plot histograms"
        return
예제 #7
0
import os
import numpy as np
from cycler import cycler
from numpy import random as rand
from matplotlib import pyplot, cm

from histogram import Histogram

from matplotlib import rc as mplrc
from histogram import rc as histrc

mplrc('patch',facecolor='steelblue')
mplrc('axes',
    prop_cycle=cycler('color', ['steelblue','olive','darkred','goldenrod','salmon','plum','grey']),
    grid = True,
    facecolor = 'white', # axes background color
)
mplrc('axes.formatter', limits=(-3,4))
mplrc('image',cmap='cubehelix_r')

histrc.plot.baseline = 'left'

if not os.path.exists('test_images'):
    os.mkdir('test_images')

def test_plot_hist1d():
    npoints = 100000
    h1 = Histogram(100,(0,10),'x','y','title')
    h1.fill(rand.normal(5,2,npoints))

    fig,ax = pyplot.subplots(2,2)
예제 #8
0
The sum of the histograms is plotted using the errorbar
style. This histogram is then smoothed using a Gaussian
filter and plotted as a line.
'''

from cycler import cycler
import numpy as np
from matplotlib import pyplot
from histogram import Histogram

from matplotlib import rc as mplrc
from histogram import rc as histrc

# interesting colors
mplrc('axes', prop_cycle=cycler('color', ['steelblue','olive','darkred',
                                          'darkorchid','goldenrod','black']))

# default is alpha=0.6, but we want slightly lighter
# patches for overlaying many histograms
histrc.plot.patch.alpha = 0.5

np.random.seed(1)

hh = []
for mean in [2,5,7]:
    hh.append(Histogram(30, [0,10], 'x (cm)', 'counts', 'Random Data'))
    hh[-1].fill(np.random.normal(mean,1,1000))

fig,ax = pyplot.subplots()

pts = []