Memory error

2014-03-24 Thread Jamie Mitchell
Hello all,

I'm afraid I am new to all this so bear with me...

I am looking to find the statistical significance between two large netCDF data 
sets.

Firstly I've loaded the two files into python:

swh=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/averages/swh_control_concat.nc',
 'r')

swh_2050s=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/2050s/averages/swh_2050s_concat.nc',
 'r')

I have then isolated the variables I want to perform the pearson correlation on:

hs=swh.variables['hs']

hs_2050s=swh_2050s.variables['hs']

Here is the metadata for those files:

print hs

int16 hs(time, latitude, longitude)
standard_name: significant_height_of_wind_and_swell_waves
long_name: significant_wave_height
units: m
add_offset: 0.0
scale_factor: 0.002
_FillValue: -32767
missing_value: -32767
unlimited dimensions: time
current shape = (86400, 350, 227)

print hs_2050s

int16 hs(time, latitude, longitude)
standard_name: significant_height_of_wind_and_swell_waves
long_name: significant_wave_height
units: m
add_offset: 0.0
scale_factor: 0.002
_FillValue: -32767
missing_value: -32767
unlimited dimensions: time
current shape = (86400, 350, 227)


Then to perform the pearsons correlation:

from scipy.stats.stats import pearsonr

pearsonr(hs,hs_2050s)

I then get a memory error:

Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/local/sci/lib/python2.7/site-packages/scipy/stats/stats.py", line 
2409, in pearsonr
x = np.asarray(x)
  File "/usr/local/sci/lib/python2.7/site-packages/numpy/core/numeric.py", line 
321, in asarray
return array(a, dtype, copy=False, order=order)
MemoryError

This also happens when I try to create numpy arrays from the data.

Does anyone know how I can alleviate theses memory errors?

Cheers,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Memory error

2014-03-24 Thread Jamie Mitchell
On Monday, March 24, 2014 11:32:31 AM UTC, Jamie Mitchell wrote:
> Hello all,
> 
> 
> 
> I'm afraid I am new to all this so bear with me...
> 
> 
> 
> I am looking to find the statistical significance between two large netCDF 
> data sets.
> 
> 
> 
> Firstly I've loaded the two files into python:
> 
> 
> 
> swh=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/averages/swh_control_concat.nc',
>  'r')
> 
> 
> 
> swh_2050s=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/2050s/averages/swh_2050s_concat.nc',
>  'r')
> 
> 
> 
> I have then isolated the variables I want to perform the pearson correlation 
> on:
> 
> 
> 
> hs=swh.variables['hs']
> 
> 
> 
> hs_2050s=swh_2050s.variables['hs']
> 
> 
> 
> Here is the metadata for those files:
> 
> 
> 
> print hs
> 
> 
> 
> int16 hs(time, latitude, longitude)
> 
> standard_name: significant_height_of_wind_and_swell_waves
> 
> long_name: significant_wave_height
> 
> units: m
> 
> add_offset: 0.0
> 
> scale_factor: 0.002
> 
> _FillValue: -32767
> 
> missing_value: -32767
> 
> unlimited dimensions: time
> 
> current shape = (86400, 350, 227)
> 
> 
> 
> print hs_2050s
> 
> 
> 
> int16 hs(time, latitude, longitude)
> 
> standard_name: significant_height_of_wind_and_swell_waves
> 
> long_name: significant_wave_height
> 
> units: m
> 
> add_offset: 0.0
> 
> scale_factor: 0.002
> 
> _FillValue: -32767
> 
> missing_value: -32767
> 
> unlimited dimensions: time
> 
> current shape = (86400, 350, 227)
> 
> 
> 
> 
> 
> Then to perform the pearsons correlation:
> 
> 
> 
> from scipy.stats.stats import pearsonr
> 
> 
> 
> pearsonr(hs,hs_2050s)
> 
> 
> 
> I then get a memory error:
> 
> 
> 
> Traceback (most recent call last):
> 
>   File "", line 1, in 
> 
>   File "/usr/local/sci/lib/python2.7/site-packages/scipy/stats/stats.py", 
> line 2409, in pearsonr
> 
> x = np.asarray(x)
> 
>   File "/usr/local/sci/lib/python2.7/site-packages/numpy/core/numeric.py", 
> line 321, in asarray
> 
> return array(a, dtype, copy=False, order=order)
> 
> MemoryError
> 
> 
> 
> This also happens when I try to create numpy arrays from the data.
> 
> 
> 
> Does anyone know how I can alleviate theses memory errors?
> 
> 
> 
> Cheers,
> 
> 
> 
> Jamie

Just realised that obviously pearson correlation requires two 1D arrays and 
mine are 3D, silly mistake!
-- 
https://mail.python.org/mailman/listinfo/python-list


Line of best fit

2014-03-31 Thread Jamie Mitchell
I am new to python so apologies for the ignorance with this question.

How would I apply a line of best fit to a plot?

My data are netCDF4 data files and this is essentially what I have done so far:

swh1=netCDF4.Dataset('filename','r')
hs1=swh1.variables['hs']

swh2=netCDF4.Dataset('filename'.'r')
hs2=swh2.variables['hs']

plt.plot(hs1,hs2,'.')

Cheers,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


len() of unsized object - ks test

2014-04-25 Thread Jamie Mitchell
Hello all,

I am trying to perform a Kolmogorov-Smirnov test in Python but I'm having a few 
difficulties.

# My files are netCDF so I import them as follows:

control=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/south_west/swhcontrol_swest_concatannavg_1D.nc','r')

# The string is simply a 1D array

# Then performing the ks test:

kstest(control,'norm')

# I then get the following error:

File "", line 1, in 
  File "/usr/local/sci/lib/python2.7/site-packages/scipy/stats/stats.py", line 
3413, in kstest
N = len(vals)
TypeError: len() of unsized object

Any ideas on why this isn't working would be great.

Thanks,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: len() of unsized object - ks test

2014-04-25 Thread Jamie Mitchell
On Friday, April 25, 2014 3:07:54 PM UTC+1, Jamie Mitchell wrote:
> Hello all,
> 
> 
> 
> I am trying to perform a Kolmogorov-Smirnov test in Python but I'm having a 
> few difficulties.
> 
> 
> 
> # My files are netCDF so I import them as follows:
> 
> 
> 
> control=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/south_west/swhcontrol_swest_concatannavg_1D.nc','r')
> 
> 
> 
> # The string is simply a 1D array
> 
> 
> 
> # Then performing the ks test:
> 
> 
> 
> kstest(control,'norm')
> 
> 
> 
> # I then get the following error:
> 
> 
> 
> File "", line 1, in 
> 
>   File "/usr/local/sci/lib/python2.7/site-packages/scipy/stats/stats.py", 
> line 3413, in kstest
> 
> N = len(vals)
> 
> TypeError: len() of unsized object
> 
> 
> 
> Any ideas on why this isn't working would be great.
> 
> 
> 
> Thanks,
> 
> 
> 
> Jamie

Thanks for your help.

Steven your right I wasn't reading in the file on netCDF4.Dataset, I was just 
opening it. I have rectified it now - a silly mistake!

Thanks again,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Saving a file as netCDF4 in Python

2014-05-08 Thread Jamie Mitchell
Dear all,

Apologies as this sounds like a very simple question but I can't find an answer 
anywhere. 

I have loaded a netCDF4 file into python as follows:

swh=netCDF4.Dataset('path/to/netCDFfile,'r')

I then isolate the variables I wish to plot:

hs=swh.variables['hs']
year=swh.variables['year']

I would then like to save these hs and year variables so that I don't have to 
isolate them every time I want to plot them.

Any help would be much appreciated.

Cheers,

Jamie 
-- 
https://mail.python.org/mailman/listinfo/python-list


Adding R squared value to scatter plot

2014-05-21 Thread Jamie Mitchell
I have made a plot using the following code:

python2.7
import netCDF4
import matplotlib.pyplot as plt
import numpy as np

swh_Q0_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q0_con_sw=swh_Q0_con_sw.variables['hs'][:]
swh_Q3_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q3/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q3_con_sw=swh_Q3_con_sw.variables['hs'][:]
swh_Q4_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q4/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q4_con_sw=swh_Q4_con_sw.variables['hs'][:]
swh_Q14_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q14/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q14_con_sw=swh_Q14_con_sw.variables['hs'][:]
swh_Q16_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q16/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q16_con_sw=swh_Q16_con_sw.variables['hs'][:]
swh_Q0_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q0_fut_sw=swh_Q0_fut_sw.variables['hs'][:]
swh_Q3_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q3/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q3_fut_sw=swh_Q3_fut_sw.variables['hs'][:]
swh_Q4_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q4/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q4_fut_sw=swh_Q4_fut_sw.variables['hs'][:]
swh_Q14_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q14/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q14_fut_sw=swh_Q14_fut_sw.variables['hs'][:]
swh_Q16_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q16/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q16_fut_sw=swh_Q16_fut_sw.variables['hs'][:]

fit_Q0_sw=np.polyfit(hs_Q0_con_sw,hs_Q0_fut_sw,1)
fit_fn_Q0_sw=np.poly1d(fit_Q0_sw)

plt.plot(hs_Q0_con_sw,hs_Q0_fut_sw,'g.')
plt.plot(hs_Q0_con_sw,fit_fn_Q0_sw(hs_Q0_con_sw),'g',label='Q0 no pert')

fit_Q3_sw=np.polyfit(hs_Q3_con_sw,hs_Q3_fut_sw,1)
fit_fn_Q3_sw=np.poly1d(fit_Q3_sw)

plt.plot(hs_Q3_con_sw,hs_Q3_fut_sw,'b.')
plt.plot(hs_Q3_con_sw,fit_fn_Q3_sw(hs_Q3_con_sw),'b',label='Q3 low sens')

fit_Q4_sw=np.polyfit(hs_Q4_con_sw,hs_Q4_fut_sw,1)
fit_fn_Q4_sw=np.poly1d(fit_Q4_sw)

plt.plot(hs_Q4_con_sw,hs_Q4_fut_sw,'y.')
plt.plot(hs_Q4_con_sw,fit_fn_Q4_sw(hs_Q4_con_sw),'y',label='Q4 low sens')

fit_Q14_sw=np.polyfit(hs_Q14_con_sw,hs_Q14_fut_sw,1)
fit_fn_Q14_sw=np.poly1d(fit_Q14_sw)

plt.plot(hs_Q14_con_sw,hs_Q14_fut_sw,'r.')
plt.plot(hs_Q14_con_sw,fit_fn_Q14_sw(hs_Q14_con_sw),'r',label='Q14 high sens')

fit_Q16_sw=np.polyfit(hs_Q16_con_sw,hs_Q16_fut_sw,1)
fit_fn_Q16_sw=np.poly1d(fit_Q16_sw)

plt.plot(hs_Q16_con_sw,hs_Q16_fut_sw,'c.')
plt.plot(hs_Q16_con_sw,fit_fn_Q16_sw(hs_Q16_con_sw),'c',label='Q16 high sens')

plt.legend(loc='best')
plt.xlabel('Significant Wave Height annual averages NW Scotland 1981-2010')
plt.ylabel('Significant Wave Height annual averages NW Scotland 2040-2069')
plt.title('Scatter plot of Significant Wave Height')
plt.show()

--

What I would like to do is display the R squared value next to the line of best 
fits that I have made. 

Does anyone know how to do this with matplotlib?

Thanks,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Matplotlib - specifying bin widths

2014-06-05 Thread Jamie Mitchell
Hello all!

Instead of setting the number of bins I want to set the bin width.

I would like my bins to go from 1.7 to 2.4 in steps of 0.05.

How do I say this in the code?

Cheers,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Adding R squared value to scatter plot

2014-06-05 Thread Jamie Mitchell
On Wednesday, May 21, 2014 1:30:16 PM UTC+1, Jason Swails wrote:
> 
> 
> 
> 
> 
> 
> On Wed, May 21, 2014 at 7:59 AM, Jamie Mitchell  wrote:
> 
> I have made a plot using the following code:
> 
> 
> 
> python2.7
> 
> import netCDF4
> 
> import matplotlib.pyplot as plt
> 
> import numpy as np
> 
> 
> 
> swh_Q0_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
> 
> hs_Q0_con_sw=swh_Q0_con_sw.variables['hs'][:]
> 
> swh_Q3_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q3/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
> 
> hs_Q3_con_sw=swh_Q3_con_sw.variables['hs'][:]
> 
> swh_Q4_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q4/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
> 
> hs_Q4_con_sw=swh_Q4_con_sw.variables['hs'][:]
> 
> swh_Q14_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q14/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
> 
> hs_Q14_con_sw=swh_Q14_con_sw.variables['hs'][:]
> 
> swh_Q16_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q16/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
> 
> hs_Q16_con_sw=swh_Q16_con_sw.variables['hs'][:]
> 
> swh_Q0_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
> 
> hs_Q0_fut_sw=swh_Q0_fut_sw.variables['hs'][:]
> 
> swh_Q3_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q3/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
> 
> hs_Q3_fut_sw=swh_Q3_fut_sw.variables['hs'][:]
> 
> swh_Q4_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q4/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
> 
> hs_Q4_fut_sw=swh_Q4_fut_sw.variables['hs'][:]
> 
> swh_Q14_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q14/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
> 
> hs_Q14_fut_sw=swh_Q14_fut_sw.variables['hs'][:]
> 
> swh_Q16_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q16/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
> 
> hs_Q16_fut_sw=swh_Q16_fut_sw.variables['hs'][:]
> 
> 
> 
> fit_Q0_sw=np.polyfit(hs_Q0_con_sw,hs_Q0_fut_sw,1)
> 
> fit_fn_Q0_sw=np.poly1d(fit_Q0_sw)
> 
> 
> 
> plt.plot(hs_Q0_con_sw,hs_Q0_fut_sw,'g.')
> 
> plt.plot(hs_Q0_con_sw,fit_fn_Q0_sw(hs_Q0_con_sw),'g',label='Q0 no pert')
> 
> 
> 
> fit_Q3_sw=np.polyfit(hs_Q3_con_sw,hs_Q3_fut_sw,1)
> 
> fit_fn_Q3_sw=np.poly1d(fit_Q3_sw)
> 
> 
> 
> plt.plot(hs_Q3_con_sw,hs_Q3_fut_sw,'b.')
> 
> plt.plot(hs_Q3_con_sw,fit_fn_Q3_sw(hs_Q3_con_sw),'b',label='Q3 low sens')
> 
> 
> 
> fit_Q4_sw=np.polyfit(hs_Q4_con_sw,hs_Q4_fut_sw,1)
> 
> fit_fn_Q4_sw=np.poly1d(fit_Q4_sw)
> 
> 
> 
> plt.plot(hs_Q4_con_sw,hs_Q4_fut_sw,'y.')
> 
> plt.plot(hs_Q4_con_sw,fit_fn_Q4_sw(hs_Q4_con_sw),'y',label='Q4 low sens')
> 
> 
> 
> fit_Q14_sw=np.polyfit(hs_Q14_con_sw,hs_Q14_fut_sw,1)
> 
> fit_fn_Q14_sw=np.poly1d(fit_Q14_sw)
> 
> 
> 
> plt.plot(hs_Q14_con_sw,hs_Q14_fut_sw,'r.')
> 
> plt.plot(hs_Q14_con_sw,fit_fn_Q14_sw(hs_Q14_con_sw),'r',label='Q14 high sens')
> 
> 
> 
> fit_Q16_sw=np.polyfit(hs_Q16_con_sw,hs_Q16_fut_sw,1)
> 
> fit_fn_Q16_sw=np.poly1d(fit_Q16_sw)
> 
> 
> 
> plt.plot(hs_Q16_con_sw,hs_Q16_fut_sw,'c.')
> 
> plt.plot(hs_Q16_con_sw,fit_fn_Q16_sw(hs_Q16_con_sw),'c',label='Q16 high sens')
> 
> 
> 
> plt.legend(loc='best')
> 
> plt.xlabel('Significant Wave Height annual averages NW Scotland 1981-2010')
> 
> plt.ylabel('Significant Wave Height annual averages NW Scotland 2040-2069')
> 
> plt.title('Scatter plot of Significant Wave Height')
> 
> plt.show()
> 
> 
> 
> --
> 
> 
> 
> What I would like to do is display the R squared value next to the line of 
> best fits that I have made.
> 
> 
> 
> Does anyone know how to do this with matplotlib?
> 
> 
> 
> You can add plain text or annotations with arrows using any of the API 
> functions described here: http://matplotlib.org/1.3.1/users/text_intro.html 
> (information specifically regarding the text call is here: 
> http://matplotlib.org/1.3.1/api/pyplot_api.html#matplotlib.pyplot.text)
> 
> 
> 
> You can also use LaTeX typesetting here, so you can make the text something 
> like r'$R^2$' to display R^2 with "nice" typesetting. (I typically use raw 
> strings for matplotlib text strings with LaTeX formulas in them since LaTeX 
> makes extensive use of the \ character.)
> 
> 
> 
> The onus is on you, the programmer, to determine _where_ on the plot you want 
> the text to appear.  Since you know what you are plotting, you can write a 
> quick helper function that will compute the optimal (to you) location for the 
> label to occur based on where things are drawn on the canvas.  There is a 
> _lot_ of flexibility here so you should be able to get your text looking 
> exactly how (and where) you want it.
> 
> 
> 
> Hope this helps,
> Jason
> 
> 
> -- 
> 
> Jason M. Swails
> BioMaPS,
> Rutgers University
> Postdoctoral Researcher

Hi Jason,

Thank you for your swift response - you solved my problem!

Sorry I took a while to get back to you.

Thanks again,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib - specifying bin widths

2014-06-06 Thread Jamie Mitchell
On Thursday, June 5, 2014 4:54:16 PM UTC+1, Jamie Mitchell wrote:
> Hello all!
> 
> 
> 
> Instead of setting the number of bins I want to set the bin width.
> 
> 
> 
> I would like my bins to go from 1.7 to 2.4 in steps of 0.05.
> 
> 
> 
> How do I say this in the code?
> 
> 
> 
> Cheers,
> 
> 
> 
> Jamie

That's great thanks Mark.
-- 
https://mail.python.org/mailman/listinfo/python-list


Overlaying a boxplot onto a time series figure

2014-06-06 Thread Jamie Mitchell
Hi there,

I would like to overlay some boxplots onto a time series.

I have tried pylab.hold(True) in between the two plots in my code but this 
hasn't worked.

The problem is that the x-axes of the boxplots and the time series are not the 
same.

Code for time series:

python2.7
import netCDF4
import matplotlib.pyplot as plt
import numpy as np

swh_Q0_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q0_con_sw=swh_Q0_con_sw.variables['hs'][:]
year_con=swh_Q0_con_sw.variables['year'][:]
swh_Q3_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q3/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q3_con_sw=swh_Q3_con_sw.variables['hs'][:]
swh_Q4_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q4/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q4_con_sw=swh_Q4_con_sw.variables['hs'][:]
swh_Q14_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q14/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q14_con_sw=swh_Q14_con_sw.variables['hs'][:]
swh_Q16_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q16/swh/controlperiod/south_west/swhcontrol_swest_annavg1D.nc','r')
hs_Q16_con_sw=swh_Q16_con_sw.variables['hs'][:]
swh_Q0_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q0_fut_sw=swh_Q0_fut_sw.variables['hs'][:]
year_fut=swh_Q0_fut_sw.variables['year'][:]
swh_Q3_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q3/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q3_fut_sw=swh_Q3_fut_sw.variables['hs'][:]
swh_Q4_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q4/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q4_fut_sw=swh_Q4_fut_sw.variables['hs'][:]
swh_Q14_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q14/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q14_fut_sw=swh_Q14_fut_sw.variables['hs'][:]
swh_Q16_fut_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q16/swh/2050s/south_west/swh2050s_swest_annavg1D.nc','r')
hs_Q16_fut_sw=swh_Q16_fut_sw.variables['hs'][:]

fit_Q0_con_sw=np.polyfit(year_con,hs_Q0_con_sw,1)
fit_fn_Q0_con_sw=np.poly1d(fit_Q0_con_sw)

plt.plot(year_con,hs_Q0_con_sw,'g.')
plt.plot(year_con,fit_fn_Q0_con_sw(year_con),'g',label='Q0 no pert')

fit_Q3_con_sw=np.polyfit(year_con,hs_Q3_con_sw,1)
fit_fn_Q3_con_sw=np.poly1d(fit_Q3_con_sw)

plt.plot(year_con,hs_Q3_con_sw,'b.')
plt.plot(year_con,fit_fn_Q3_con_sw(year_con),'b',label='Q3 low sens')

fit_Q4_con_sw=np.polyfit(year_con,hs_Q4_con_sw,1)
fit_fn_Q4_con_sw=np.poly1d(fit_Q4_con_sw)

plt.plot(year_con,hs_Q4_con_sw,'y.')
plt.plot(year_con,fit_fn_Q4_con_sw(year_con),'y',label='Q4 low sens')

fit_Q14_con_sw=np.polyfit(year_con,hs_Q14_con_sw,1)
fit_fn_Q14_con_sw=np.poly1d(fit_Q14_con_sw)

plt.plot(year_con,hs_Q14_con_sw,'r.')
plt.plot(year_con,fit_fn_Q14_con_sw(year_con),'r',label='Q14 high sens')

fit_Q16_con_sw=np.polyfit(year_con,hs_Q16_con_sw,1)
fit_fn_Q16_con_sw=np.poly1d(fit_Q16_con_sw)

plt.plot(year_con,hs_Q16_con_sw,'c.')
plt.plot(year_con,fit_fn_Q16_con_sw(year_con),'c',label='Q16 high sens')

fit_Q0_fut_sw=np.polyfit(year_fut,hs_Q0_fut_sw,1)
fit_fn_Q0_fut_sw=np.poly1d(fit_Q0_fut_sw)

plt.plot(year_fut,hs_Q0_fut_sw,'g.')
plt.plot(year_fut,fit_fn_Q0_fut_sw(year_fut),'g')

fit_Q3_fut_sw=np.polyfit(year_fut,hs_Q3_fut_sw,1)
fit_fn_Q3_fut_sw=np.poly1d(fit_Q3_fut_sw)

plt.plot(year_fut,hs_Q3_fut_sw,'b.')
plt.plot(year_fut,fit_fn_Q3_fut_sw(year_fut),'b')

fit_Q4_fut_sw=np.polyfit(year_fut,hs_Q4_fut_sw,1)
fit_fn_Q4_fut_sw=np.poly1d(fit_Q4_fut_sw)

plt.plot(year_fut,hs_Q4_fut_sw,'y.')
plt.plot(year_fut,fit_fn_Q4_fut_sw(year_fut),'y')

fit_Q14_fut_sw=np.polyfit(year_fut,hs_Q14_fut_sw,1)
fit_fn_Q14_fut_sw=np.poly1d(fit_Q14_fut_sw)

plt.plot(year_fut,hs_Q14_fut_sw,'r.')
plt.plot(year_fut,fit_fn_Q14_fut_sw(year_fut),'y')

fit_Q16_fut_sw=np.polyfit(year_fut,hs_Q16_fut_sw,1)
fit_fn_Q16_fut_sw=np.poly1d(fit_Q16_fut_sw)

plt.plot(year_fut,hs_Q16_fut_sw,'c.')
plt.plot(year_fut,fit_fn_Q16_fut_sw(year_fut),'c')

plt.legend(loc='best')
plt.xlabel('Year')
plt.ylabel('Significant Wave Height annual averages SW England')
plt.title('Time series of Significant Wave Height')
plt.show()

Code for boxplots:

python2.7
from pylab import *
import netCDF4

data=(hs_Q0_con_sw,hs_Q3_con_sw,hs_Q4_con_sw,hs_Q14_con_sw,hs_Q16_con_sw)

figure(1)
boxplot(data)
labels=('QO no pert','Q3 low sens','Q4 low sens','Q14 high sens','Q16 high 
sens')
xticks(range(1,6),labels,rotation=15)
xlabel('Ensemble Member')
ylabel('Significant Wave Height Annual Average')
title('Significant Wave Height SW England 1981-2010')
show()



If anybody knows how I could integrate these two plots I would be eternally 
grateful!

Thanks,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Matplotlib Colouring outline of histogram

2014-06-20 Thread Jamie Mitchell
Hi folks,

Instead of colouring the entire bar of a histogram i.e. filling it, I would 
like to colour just the outline of the histogram. Does anyone know how to do 
this?
Version - Python2.7

Cheers,
Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Problem with numpy 2D Histogram

2014-06-20 Thread Jamie Mitchell
Hi folks,

I'm trying to plot a 2D histogram but I'm having some issues:
from pylab import *
import numpy as np
import netCDF4
hist,xedges,yedges=np.histogram2d(x,y,bins=10)
extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]]
imshow(hist.T,extent=extent,interpolation='nearest')
colorbar()
show()

After the first line of code I get:
TypeError: Cannot cast array data from dtype('O') to dtype('float64') according 
to the rule 'safe'

I'm using python2.7, x and y are type 'numpy.ndarray'

Cheers,
Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Problem with numpy 2D Histogram

2014-06-20 Thread Jamie Mitchell
On Friday, June 20, 2014 10:25:44 AM UTC+1, Peter Otten wrote:
> Jamie Mitchell wrote:
> 
> 
> 
> > Hi folks,
> 
> > 
> 
> > I'm trying to plot a 2D histogram but I'm having some issues:
> 
> > from pylab import *
> 
> > import numpy as np
> 
> > import netCDF4
> 
> > hist,xedges,yedges=np.histogram2d(x,y,bins=10)
> 
> > extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]]
> 
> > imshow(hist.T,extent=extent,interpolation='nearest')
> 
> > colorbar()
> 
> > show()
> 
> > 
> 
> > After the first line of code I get:
> 
> > TypeError: Cannot cast array data from dtype('O') to dtype('float64')
> 
> > according to the rule 'safe'
> 
> > 
> 
> > I'm using python2.7, x and y are type 'numpy.ndarray'
> 
> 
> 
> The error message complains about the dtype, i. e. the type of the elements 
> 
> in the array, not the array itself. Make sure the elements are floating 
> 
> point numbers or something compatible, not arbitrary Python objects.
> 
> As a baseline the following works
> 
> 
> 
> from pylab import *
> 
> import numpy as np
> 
> 
> 
> x, y = np.random.randn(2, 100)
> 
> print "x", type(x), x.dtype
> 
> print "y", type(y), y.dtype
> 
> 
> 
> hist, xedges, yedges = np.histogram2d(x, y, bins=10)
> 
> extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
> 
> imshow(hist.T, extent=extent, interpolation='nearest')
> 
> colorbar()
> 
> show()
> 
> 
> 
> while this doesn't:
> 
> 
> 
> #...
> 
> x, y = np.random.randn(2, 100)
> 
> import decimal
> 
> y = np.array([decimal.Decimal.from_float(v) for v in y])
> 
> #...

Thanks Peter.

I have changed my x and y data to float64 types but I am still getting the same 
error message?

Cheers,
Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Problem with numpy 2D Histogram

2014-06-20 Thread Jamie Mitchell
On Friday, June 20, 2014 12:00:15 PM UTC+1, Peter Otten wrote:
> Jamie Mitchell wrote:
> 
> 
> 
> > I have changed my x and y data to float64 types but I am still getting the
> 
> > same error message?
> 
> 
> 
> Please double-check by adding
> 
> 
> 
> assert x.dtype == np.float64
> 
> assert y.dtype == np.float64
> 
> 
> 
> If none of these assertions fail try to make a minimal script including some 
> 
> data that provokes the TypeError and post it here.

OK this is my code:

swh_Q0_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/swh/controlperiod/south_west/swhcontrol_swest_annavg.nc','r')
hs_Q0_con_sw=swh_Q0_con_sw.variables['hs'][:]
x=hs_Q0_con_sw.astype(float64)
# When I print the dtype of x here it says 'float64'
mwp_Q0_con_sw=netCDF4.Dataset('/data/cr1/jmitchel/Q0/mean_wave_period/south_west/controlperiod/mwpcontrol_swest_annavg1D.nc','r')
te_Q0_con_sw=mwp_Q0_con_sw.variables['te'][:]
y=te_Q0_con_sw.astype(float64)
If I try assert x.dtype == np.float64 I get:
AssertionError

hist,xedges,yedges=np.histogram2d(x,y,bins=10)
TypeError: Cannot cast array data from dtype('O') to dtype('float64') according 
to the rule 'safe' 

Thanks,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Problem with numpy 2D Histogram

2014-06-20 Thread Jamie Mitchell
On Friday, June 20, 2014 9:46:29 AM UTC+1, Jamie Mitchell wrote:
> Hi folks,
> 
> 
> 
> I'm trying to plot a 2D histogram but I'm having some issues:
> 
> from pylab import *
> 
> import numpy as np
> 
> import netCDF4
> 
> hist,xedges,yedges=np.histogram2d(x,y,bins=10)
> 
> extent=[xedges[0],xedges[-1],yedges[0],yedges[-1]]
> 
> imshow(hist.T,extent=extent,interpolation='nearest')
> 
> colorbar()
> 
> show()
> 
> 
> 
> After the first line of code I get:
> 
> TypeError: Cannot cast array data from dtype('O') to dtype('float64') 
> according to the rule 'safe'
> 
> 
> 
> I'm using python2.7, x and y are type 'numpy.ndarray'
> 
> 
> 
> Cheers,
> 
> Jamie

Thanks for your help Peter.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Colouring outline of histogram

2014-06-20 Thread Jamie Mitchell
On Friday, June 20, 2014 2:47:03 PM UTC+1, Jason Swails wrote:
> On Fri, Jun 20, 2014 at 4:10 AM, Jamie Mitchell  wrote:
> 
> Hi folks,
> 
> 
> 
> Instead of colouring the entire bar of a histogram i.e. filling it, I would 
> like to colour just the outline of the histogram. Does anyone know how to do 
> this?
> 
> Version - Python2.7
> 
> 
> 
> Look at the matplotlib.pyplot.hist function documentation: 
> http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist
> 
> 
> 
> In addition to the listed parameters, you'll see the "Other Parameters" taken 
> are those that can be applied to the created Patch objects (which are the 
> actual rectangles).  For the Patch keywords, see the API documentation on the 
> Patch object 
> (http://matplotlib.org/api/artist_api.html#matplotlib.patches.Patch). So you 
> can do one of two things:
> 
> 
> 
> 1) Pass the necessary Patch keywords to effect what you want
> 
> 
> 
> e.g. (untested):
> import matplotlib.pyplot as plt
> 
> 
> 
> plt.hist(dataset, bins=10, range=(-5, 5), normed=True,
>          edgecolor='b', linewidth=2, facecolor='none', # Patch options
> 
> )
> 
> 
> plt.show()
> 
> 
> 
> 2) Iterate over the Patch instances returned by plt.hist() and set the 
> properties you want.
> 
> 
> 
> e.g. (untested):
> import matplotlib.pyplot as plt
> 
> 
> 
> n, bins, patches = plt.hist(dataset, bins=10, range=(-5, 5), normed=True)
> for patch in patches:
> 
>     patch.set_edgecolor('b') # color of the lines around each bin
>     patch.set_linewidth(2) # Set width of bin edge
> 
>     patch.set_facecolor('none') # set no fill
>     # Anything else you want to do
> 
> 
> 
> plt.show()
> 
> 
> Approach (1) is the "easy" way, and is there to satisfy the majority of use 
> cases.  However, approach (2) is _much_ more flexible.  Suppose you wanted to 
> highlight a particular region of your data with a specific facecolor or 
> edgecolor -- you can apply the features you want to individual patches using 
> approach (2).  Or if you wanted to highlight a specific bin with thicker 
> lines.
> 
> 
> 
> This is a common theme in matplotlib -- you can use keywords to apply the 
> same features to every part of a plot or you can iterate over the drawn 
> objects and customize them individually.  This is a large part of what makes 
> matplotlib nice to me -- it has a "simple" mode as well as a predictable API 
> for customizing a plot in almost any way you could possibly want.
> 
> 
> 
> HTH,
> Jason
> 
> 
> -- 
> 
> Jason M. Swails
> BioMaPS,
> Rutgers University
> Postdoctoral Researcher

That's great Jason thanks for the detailed response, I went with the easier 
option 1!

I am also trying to put hatches on my histograms like so:

plt.hist(dataset,bins=10,hatch=['*'])

When it comes to plt.show() I get the following error message:
File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_gtk.py",
 line 435, in expose_event
self._render_figure(self._pixmap, w, h)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_gtkagg.py",
 line 84, in _render_figure
FigureCanvasAgg.draw(self)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_agg.py",
 line 451, in draw
self.figure.draw(self.renderer)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/artist.py",
 line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/figure.py",
 line 1034, in draw
func(*args)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/artist.py",
 line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/axes.py",
 line 2086, in draw
a.draw(renderer)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/artist.py",
 line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/patches.py",
 line 429, in draw
renderer.draw_path(gc, tpath, affine, rgbFace)
  File 
"/usr/local/sci/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x

Re: Matplotlib Colouring outline of histogram

2014-06-20 Thread Jamie Mitchell
On Friday, June 20, 2014 9:10:58 AM UTC+1, Jamie Mitchell wrote:
> Hi folks,
> 
> 
> 
> Instead of colouring the entire bar of a histogram i.e. filling it, I would 
> like to colour just the outline of the histogram. Does anyone know how to do 
> this?
> 
> Version - Python2.7
> 
> 
> 
> Cheers,
> 
> Jamie

Great thanks again Jason.
-- 
https://mail.python.org/mailman/listinfo/python-list


Contouring a 2D histogram

2014-06-27 Thread Jamie Mitchell
Hi all,

I have plotted a 2D histogram like so:

python2.7
import netCDF4
import iris
import iris.palette
import numpy as np
import matplotlib as mpl
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
from matplotlib.colors import from_levels_and_colors

fig=plt.figure()
nbins=20
nice_cmap=plt.get_cmap('brewer_RdYlBu_11')
colors=nice_cmap([5,6,7,8,9,10])
levels=[1,2,3,4,5]
cmap, norm=from_levels_and_colors(levels, colors, extend='both')

H, xedges, yedges=np.histogram2d(te_Q0_con_sw,hs_Q0_con_sw,bins=nbins)
Hmasked=np.ma.masked_where(H==0,H)
plt.pcolormesh(xedges,yedges,Hmasked,cmap=cmap,norm=norm,label='Q0 control')

# From this I get a 'scattered' 2D histogram.

Does anyone know how I can contour that scatter?

Thanks,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Matplotlib Contour Plots

2014-08-14 Thread Jamie Mitchell
Hello all,

I want to contour a scatter plot but I don't know how.

Can anyone help me out?

Cheers,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Contour Plots

2014-08-15 Thread Jamie Mitchell
On Thursday, August 14, 2014 5:53:09 PM UTC+1, Steven D'Aprano wrote:
> Jamie Mitchell wrote:
> 
> 
> 
> > Hello all,
> 
> > 
> 
> > I want to contour a scatter plot but I don't know how.
> 
> > 
> 
> > Can anyone help me out?
> 
> 
> 
> Certainly. Which way did you come in? 
> 
> 
> 
> :-)
> 
> 
> 
> Sorry, I couldn't resist.
> 
> 
> 
> It took me literally 20 seconds to find this by googling for "matplotlib
> 
> contour plot", and it only took that long because I misspelled "contour"
> 
> the first time.
> 
> 
> 
> http://matplotlib.org/examples/pylab_examples/contour_demo.html
> 
> 
> 
> 
> 
> Does this help? If not, please explain what experience you have with
> 
> matplotlib, what you have tried, what you expected it to do, and what it
> 
> did instead.
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> Steven

Yep I've seen that thanks but I can't get it to work. I don't have much 
experience with matplotlib or programming in general.

I just want to get a contour plot of two numpy arrays.

When I call plt.contour on my data I get "input must be a 2D array"

An example of one of my arrays:

array([ 2.0886,  2.29400015,  2.00400019,  1.8811,  2.0480001 ,
2.16800022,  2.0480001 ,  1.8829,  1.9586,  2.0029,
2.02800012,  1.8124,  1.9505,  1.96200013,  1.95200014,
1.99800014,  2.0717,  1.8829,  1.9849,  2.1346,
2.1148,  1.8945,  2.0519,  2.0198,  2.03400016,
2.16600013,  2.0099,  1.86200011,  2.19800019,  2.0128], 
dtype=float32)

How do I get the above array in to the right format for a contour plot?

Thanks,

Jamie

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Contour Plots

2014-08-15 Thread Jamie Mitchell
On Friday, August 15, 2014 2:23:25 PM UTC+1, Steven D'Aprano wrote:
> Jamie Mitchell wrote:
> 
> 
> 
> [...]
> 
> > I just want to get a contour plot of two numpy arrays.
> 
> > When I call plt.contour on my data I get "input must be a 2D array"
> 
> 
> 
> You are providing a 1D array, or possibly a 3D array. So the question you
> 
> really want to ask is not "How do I do contour plots" but "how do I make a
> 
> 2D array?"
> 
> 
> 
> 
> 
> > An example of one of my arrays:
> 
> > 
> 
> > array([ 2.0886,  2.29400015,  2.00400019,  1.8811,  2.0480001 ,
> 
> > 2.16800022,  2.0480001 ,  1.8829,  1.9586,  2.0029,
> 
> > 2.02800012,  1.8124,  1.9505,  1.96200013,  1.95200014,
> 
> > 1.99800014,  2.0717,  1.8829,  1.9849,  2.1346,
> 
> > 2.1148,  1.8945,  2.0519,  2.0198,  2.03400016,
> 
> > 2.16600013,  2.0099,  1.86200011,  2.19800019,  2.0128],
> 
> > dtype=float32)
> 
> > 
> 
> > How do I get the above array in to the right format for a contour plot?
> 
> 
> 
> Here's an example of making a 2D array:
> 
> 
> 
> py> import numpy
> 
> py> a = numpy.array([1.2, 2.5, 3.7, 4.8])  # One dimensional array
> 
> py> a
> 
> array([ 1.2,  2.5,  3.7,  4.8])
> 
> py> b = numpy.array([ [1.2, 2.5, 3.7, 4.8], 
> 
> ...   [9.5, 8.1, 7.0, 6.2] ])  # Two dimensional array
> 
> py> b
> 
> array([[ 1.2,  2.5,  3.7,  4.8],
> 
>[ 9.5,  8.1,  7. ,  6.2]])
> 
> 
> 
> One dimensional arrays are made from a single list of numbers: [...]
> 
> 
> 
> Two dimensional arrays are made from a list of lists: [ [...], [...] ]
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> Steven

Thank you Steven.

I created the 2D array which read as:

array([[[ 2.0886,  2.29400015,  2.00400019,  1.8811,  2.0480001 ,
  2.16800022,  2.0480001 ,  1.8829,  1.9586,  2.0029,
  2.02800012,  1.8124,  1.9505,  1.96200013,  1.95200014,
  1.99800014,  2.0717,  1.8829,  1.9849,  2.1346,
  2.1148,  1.8945,  2.0519,  2.0198,  2.03400016,
  2.16600013,  2.0099,  1.86200011,  2.19800019,  2.0128]],

   [[ 8.515 ,  8.8811,  8.5519,  7.9481,  8.6066,
  8.515 ,  8.8019,  8.1311,  8.6858,  8.7254,
  8.4754,  8.25  ,  8.4085,  8.4358,  8.3839,
  8.3566,  8.6339,  8.5123,  8.3689,  8.6981,
  8.5273,  8.1339,  8.3689,  8.4208,  8.5547,
  8.7254,  9.0915,  8.1858,  8.7623,  8.5396]]], 
dtype=float32)

Unfortunately when I called plt.contour on this, it said again "Input must be a 
2D array".

Is there something I have missed?

Thanks,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Contour Plots

2014-08-18 Thread Jamie Mitchell
On Friday, August 15, 2014 4:13:26 PM UTC+1, Steven D'Aprano wrote:
> Jamie Mitchell wrote:
> 
> 
> 
> > I created the 2D array which read as:
> 
> 
> 
> That's not a 2D array.
> 
> 
> 
> When the amount of data you have is too big to clearly see what it
> 
> happening, replace it with something smaller. Instead of 30 items per
> 
> sub-array, try it with 5 items per sub-array. Instead of eight decimal
> 
> places, try it with single-digit integers. Anything to make it small enough
> 
> to see clearly.
> 
> 
> 
> When I do that with your data, instead of this:
> 
> 
> 
> > array([[[ 2.0886,  2.29400015,  2.00400019,  1.8811,  2.0480001 ,
> 
> >   2.16800022,  2.0480001 ,  1.8829,  1.9586,  2.0029,
> 
> >   2.02800012,  1.8124,  1.9505,  1.96200013,  1.95200014,
> 
> >   1.99800014,  2.0717,  1.8829,  1.9849,  2.1346,
> 
> >   2.1148,  1.8945,  2.0519,  2.0198,  2.03400016,
> 
> >   2.16600013,  2.0099,  1.86200011,  2.19800019, 
> 
> >   2.0128]],
> 
> > 
> 
> >[[ 8.515 ,  8.8811,  8.5519,  7.9481,  8.6066,
> 
> >   8.515 ,  8.8019,  8.1311,  8.6858,  8.7254,
> 
> >   8.4754,  8.25  ,  8.4085,  8.4358,  8.3839,
> 
> >   8.3566,  8.6339,  8.5123,  8.3689,  8.6981,
> 
> >   8.5273,  8.1339,  8.3689,  8.4208,  8.5547,
> 
> >   8.7254,  9.0915,  8.1858,  8.7623, 
> 
> >   8.5396]]], dtype=float32)
> 
> 
> 
> 
> 
> I get this:
> 
> 
> 
> 
> 
> array([[[ 2,  2,  2,  1,  2]],
> 
>[[ 8,  8,  8,  7,  8]]], dtype=float32)
> 
> 
> 
> 
> 
> which is much easier to work with. See the difference between that smaller
> 
> example, and my earlier explanation of the difference between a 1D and 2D
> 
> array?
> 
> 
> 
> One dimensional arrays are made from a single list of numbers: [...]
> 
> Two dimensional arrays are made from a list of lists: [ [...], [...] ]
> 
> 
> 
> *Three* dimensional arrays are made from a list of lists of lists: 
> 
> [ [ [...], [...] ] ]
> 
> 
> 
> *Four* dimensional arrays are made from a list of lists of lists of lists:
> 
> [ [ [ [...], [...] ] ] ]
> 
> 
> 
> and so on. You have a 3D array, with dimensions 2 x 1 x 30.
> 
> 
> 
> You can check the dimensions by storing the array into a variable like this:
> 
> 
> 
> py> a = numpy.array([[[ 2,  2,  2,  1,  2]], [[ 8,  8,  8,  7,  8]]])
> 
> py> a.shape
> 
> (2, 1, 5)
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> Steven

Thanks for your suggestions Steven. Unfortunately I still can't make the plot 
I'm looking for.

Do you mind if I go back to the start? Sorry I'm probably not explaining what I 
need very well.

So I have two 1D arrays:

1st array - ([8, 8.8,8.5,7.9,8.6 ...], dtype=float32)

It has a shape (150,)

2nd array - ([2, 2.2, 2.5, 2.3, ...],dtype=float32)

It has a shape (150,)

What I want to do is create a 2D array which merges the 1st and 2nd array so 
that I would have:

([[8, 8.8,8.5,7.9,8.6 ...],[2,2,2,2,5,2.3, ...]], dtype=float32) that would 
have a shape (150,150)

In this form I could then plot a 2D contour.

Thanks for your patience.

Jamie

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Contour Plots

2014-08-18 Thread Jamie Mitchell
I forgot to mention that when I try:

a=np.array([[hs_con_sw],[te_con_sw]])

I get a 3D shape for some reason - (2,1,150) which is not what I'm after.

Thanks,

Jamie

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Contour Plots

2014-08-19 Thread Jamie Mitchell
You were right Christian I wanted a shape (2,150).

Thank you Rustom and Steven your suggestion has worked.

Unfortunately the data doesn't plot as I imagined.

What I would like is:

X-axis - hs_con_sw
Y-axis - te_con_sw
Z-axis - Frequency

What I would like is for the Z-axis to contour the frequency or amount of times 
that the X-axis data and Y-axis data meet at a particular point or bin.

Does anyone know what function or graph could best show this?

Thanks for all your help,

Jamie
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Matplotlib Contour Plots

2014-08-20 Thread Jamie Mitchell
On Tuesday, August 19, 2014 10:21:48 PM UTC+1, pec...@pascolo.net wrote:
> Jamie Mitchell  writes:
> 
> 
> 
> > You were right Christian I wanted a shape (2,150).
> 
> >
> 
> > Thank you Rustom and Steven your suggestion has worked.
> 
> >
> 
> > Unfortunately the data doesn't plot as I imagined.
> 
> >
> 
> > What I would like is:
> 
> >
> 
> > X-axis - hs_con_sw
> 
> > Y-axis - te_con_sw
> 
> > Z-axis - Frequency
> 
> >
> 
> > What I would like is for the Z-axis to contour the frequency or
> 
> > amount of times that the X-axis data and Y-axis data meet at a
> 
> > particular point or bin.
> 
> >
> 
> > Does anyone know what function or graph could best show this?
> 
> 
> 
> in my understanding, you have 3 arrays of data that describe 3D data
> 
> points, and you want to draw a 2D contour plot...
> 
> 
> 
> in this case you have to interpolate the z-values on a regular grid,
> 
> that's very easy if you already know what to do ;-)
> 
> 
> 
> here I assume that data is in a .csv file
> 
> 
> 
> % cat a.csv
> 
> 0 ≤ x ≤ 10, 0 ≤ y ≤ 10, z = cos(sqrt((x-5)**2_(y-5)**2))
> 
> 1.922065,5.827944,-0.998953
> 
> 7.582322,0.559370,0.411861
> 
> 5.001753,3.279957,-0.148694
> 
> ...
> 
> 
> 
> of course my z's are different from yours, but this shouldn't be a
> 
> real problem --- and here it is my *tested* solution (tested on python
> 
> 2.7, that is), please feel free to adapt to your needs
> 
> 
> 
> hth, ciao
> 
>g
> 
> 
> 
> % cat contour.py
> 
> from numpy import loadtxt, linspace
> 
> from matplotlib.mlab import griddata
> 
> import matplotlib.pyplot as pl
> 
> 
> 
> # open 'a.csv', specify the delimiter, specify how many header rows,
> 
> # slurp the data
> 
> temp_array = loadtxt(open('a.csv'),delimiter=',',skiprows=1)
> 
> 
> 
> # the shape of temp_array is (N,3), we want its transpose
> 
> temp_array = temp_array.transpose()
> 
> 
> 
> # now the shape is (3,N) and we can do "unpack and assignment:
> 
> x, y, z = temp_array
> 
> 
> 
> # now the tricky part, 
> 
> 
> 
> # 1: create two arrays with 101 (arbitrary number) equispaced values
> 
> # between 0 and 10 --- that is the ranges of data x and data y
> 
> xi = linspace(0,10,101)
> 
> yi = linspace(0,10,101)
> 
> 
> 
> # 2: create, by interpolation, the 2D array that contourf so eagerly
> 
> # awaited!
> 
> print griddata.__doc__
> 
> zi = griddata(x,y,z, xi,yi)
> 
> 
> 
> # eventually, lets plot the stuff...
> 
> # see http://matplotlib.org/examples/pylab_examples/griddata_demo.html
> 
> # for further details and ideas
> 
> 
> 
> pl.contour (xi,yi,zi,11,linewidths=1,colors='black')
> 
> pl.contourf(xi,yi,zi); pl.colorbar()
> 
> # optional
> 
> pl.gca().set_aspect('equal', 'box')
> 
> pl.show()
> 
> % python contour.py

This is great and works very well - thank you!!
-- 
https://mail.python.org/mailman/listinfo/python-list