Dear Joe,

finally I had time to come back to my python scritp for the contour plots.
You're code works very nicelly and does exactly what I need.

Thank you for the help

Francesco

2010/7/26 Joe Kington <jking...@wisc.edu>:
> It sounds like you're wanting a gaussian kernel density estimate (KDE) (not
> the desktop!).  The other options you mentioned are for interpolation, and
> are not at all what you're wanting to do.
>
> You can use scipy.stats.kde.gaussian_kde(). However, it currently doesn't
> take a weights array, so you'll need to modify it for your use case.
>
> If you prefer, I have faster version of a gaussian KDE that can take a
> weights array.  It's actually slower than the scipy's gaussian kde for a low
> number of points, but for hundreds, thousands, or millions of points, it's
> several orders of magnitude faster.  (Though the speedup depends on the
> covariance of the points... higher covariance = slower, generally speaking)
>
> Here's a quick pastebin of the code.  http://pastebin.com/LNdYCZgw
>
> To use it, you do something like the below... (assuming the code in the
> pastebin is saved in a file called fast_kde.py)
>
> import numpy as np
> import matplotlib.pyplot as plt
> from fast_kde import fast_kde
>
> # From your description of your data...
> weights, x, y = np.loadtxt('chain.txt', usecols=(0,4,6)).T
>
> kde_grid = fast_kde(x, y, gridsize=(200,200), weights=weights)
>
> # Plot the grid
> plt.figure()
> plt.imshow(kde_grid, extent=(x.min(), x.max(), y.max(), y.min())
>
> # Reverse the y-axis
> plt.gca().invert_yaxis()
>
> plt.show()
>
> Hope that helps a bit,
> -Joe
>
>
>
>
> On Sat, Jul 24, 2010 at 3:56 AM, montefra <franz.berges...@googlemail.com>
> wrote:
>>
>> Hi,
>>
>> I am writing a program that reads three columns (one column containing the
>> weights, the other two containing the values I want to plot) from a file
>> containing the results from a MonteCarlo Markov Chain. The file contains
>> thousends of lines. Then create the 2D histogram and make contourplots.
>> Here
>> is a sample of the code (I don't know if is correct, it's just to show
>> what
>> I do)
>>
>> >>> import numpy as np
>> >>> import matplotlib.pyplot as mplp
>> >>> chain = np.loadtxt("chain.txt", usecols=[0,4,6])   #read columns 0
>> >>> (the
>> >>> weights), 4 and 6 (the data), from the file "chain.txt"
>> >>> h2D, xe, ye = np.histogram2D(chain[:,1],chain[:,2],
>> >>> weights=chain[:,0])
>> >>> #create the 2D histogram
>> >>> x = (xe[:-1] + xe[1:])/2. #x and y values for the plot (I use the mean
>> >>> of each bin)
>> >>> y = (ye[:-1] + ye[1:])/2.
>> >>> mplp.figure()   #open the figure
>> >>> mplp.contourf(x, y, h2D.T, origin='lower')  #contour plot
>>
>> As it is the contours are not smooth and they look not that nice. After
>> days
>> of searches I've found three methods and tried, unsuccesfully, to apply
>> them
>> 1) 2d interpolation: I got "segmentation fault" (on a quadcore machine
>> with
>> 8Gb of RAM)
>> 2) Rbf (radial basis functions): I got wrong contours
>> 3) ndimage: it creates spurious features (like secondary peaks parallel to
>> the direction of the main one)
>>
>> Before beginning with Python, I used to use IDL to plot, and there is a
>> function 'smooth' that smooth for you 2D histograms. I haven't found
>> anything similar for Python.
>> Does anyone have an idea or suggestion on how to do it?
>>
>> Thank in advance
>> Francesco
>>
>> --
>> View this message in context:
>> http://old.nabble.com/Smooth-contourplots-tp29253884p29253884.html
>> Sent from the matplotlib - users mailing list archive at Nabble.com.
>>
>>
>>
>> ------------------------------------------------------------------------------
>> The Palm PDK Hot Apps Program offers developers who use the
>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>> of $1 Million in cash or HP Products. Visit us here for more details:
>> http://ad.doubleclick.net/clk;226879339;13503038;l?
>> http://clk.atdmt.com/CRS/go/247765532/direct/01/
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>



-- 
personals: monty...@yahoo.it, monte_...@hotmail.com (messenger),
franz.berges...@googlemail.com.
work: monte...@mpe.mpg.de

http://picasaweb.google.it/franz.bergesund

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to