You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(1) |
2
(4) |
3
(12) |
4
(5) |
5
(30) |
6
(21) |
7
(20) |
8
(11) |
9
(9) |
10
(12) |
11
(11) |
12
(22) |
13
(22) |
14
(38) |
15
(25) |
16
(23) |
17
(20) |
18
(7) |
19
(13) |
20
(13) |
21
(18) |
22
(6) |
23
(7) |
24
(4) |
25
(9) |
26
(35) |
27
(37) |
28
(22) |
29
(27) |
30
(12) |
31
(4) |
Le mardi 27 janvier 2009 à 13:17 +0100, Marcin Krol a écrit : > How do I set the attributes of Line2D instance? I have: > > origline = plt.plot(origlist) > valine = plt.plot(valist) > plt.xlim(0,256) > valine.set_color('r') > valine.set_linewidth(2) > > Traceback (most recent call last): > AttributeError: 'list' object has no attribute 'set_color' As mentioned in the traceback, valine is a list and not a Line2D instance. In fact, the plt.plot function returns the list of the Line2D instances added to the axes by the instruction. Even if you only plot one curve. As a solution, you may correct to valine, = plt.plot(valist) which unpack the list and extract the first item (the Line2D instance you want) to valine. -- Fabrice Silva <si...@lm...> LMA UPR CNRS 7051 - équipe S2M
mfabulous wrote: > Hi all, > > I apologize if this was asked before. I just started adding legends to my > plots > and found the legend stile for a point-plot, i.e. a plot using points > rather > than > lines to be a bit confusing. > > Example: > pylab.plot(arange(5), arange(5), 'o', label="foo") > pylab.legend() > > Will produce a legend which looks like "o o foo". > Why are there two points? Can I force it to give me only one? That may depend on how old your version of matplotlib is; for quite a while there has been a "numpoints" kwarg to the legend command which lets you set that number, e.g., "pylab.legend(numpoints=1)". Eric Thats it... thank you! Cheers, Maximilian -- View this message in context: http://www.nabble.com/legend-for-plots-with-points-tp21680968p21689742.html Sent from the matplotlib - users mailing list archive at Nabble.com.
Hi, I would like to change the hue range of the hsv color map to use only hue values between 0 and 0.6667. I checked the documentation of matplotlib and searched in the internet but couldn't find the answer. Best regards, KB -- View this message in context: http://www.nabble.com/Change-Hue-Range-in-HSV-color-map-tp21689235p21689235.html Sent from the matplotlib - users mailing list archive at Nabble.com.
mfabulous wrote: > Hi all, > > I apologize if this was asked before. I just started adding legends to my > plots > and found the legend stile for a point-plot, i.e. a plot using points rather > than > lines to be a bit confusing. > > Example: > pylab.plot(arange(5), arange(5), 'o', label="foo") > pylab.legend() > > Will produce a legend which looks like "o o foo". > Why are there two points? Can I force it to give me only one? That may depend on how old your version of matplotlib is; for quite a while there has been a "numpoints" kwarg to the legend command which lets you set that number, e.g., "pylab.legend(numpoints=1)". Eric
Hi Norbert, Both of your proposals (b) and (c) sound better to me than the current behaviour, although they don't sound as obvious to me as simply defaulting to always setting the mec to the line colour unless overridden using mec="k" - you could label this proposal (d). Since others seem to have been happy with the black edges and I don't know how much extra logic (and consequently extra overhead) is required to change to (d), I'd be easily persuaded that (b) or (c) would be OK since, as you say, the black edge of filled markers is a matter of style preference and if black edges are not wanted on a particular plot that uses filled markers, the edge width can simply be set to zero. The decision might be guided by whichever results in the simplest logic or least overhead. regards, Gary Norbert Nemec wrote: > Before my work in 2004, the colors were not following the line color at > all, which was clearly bad behavior. > > Now, there are two categories: filled markers (with edge color black and > filling following the line color) and non-filled markers (with edge > color following line color). > > The black edge of filled markers is a matter of style which I personally > like and would not want to change. > > The thing that was up for dispute was only about what the edge color of > filled markers should do when the filling is switched off. I see three > ways to solve this: > > a) Leave it black. (current behavior) > b) Switch mec to line color if mfc is either "none" or "white". > c) Switch mec to line color if mfc is not "auto" > > b) or c) might be what people would expect and prefer, but I feared that > it would be one step too many in built-in intelligence. But then - maybe > c) would be ok? After all, switching from c) to a) by an explicit > mec="k" is simple and obvious, the other way around takes a bit more. > > Greetings, > Norbert
I figured out why your show() works...you had WxPython installed and I'm assuming your backend was defaulting to this since Tkinter wasn't found. Once I noticed that I installed WxPython and then re-buily matplotlib with WxPython. If I used wxpython as my backend, then my GUIs worked. I can import pylab just fine and I don't appear to have any errors. While I can't figure out what your problem is, you are free to try the binary I built and see if it works: http://code.patricktmarsh.com/matplotlib-0.98.6svn.win32-py2.6.exe If you do decide to try this, let me know if it works. -Patrick On Tue, Jan 27, 2009 at 9:22 AM, Marcin Krol <mr...@gm...> wrote: > John Hunter wrote: > >> First of all, on the clean build, when you do >> >> import matplotlib._path >> >> do you still get the same error. > > No, it's working fine on the new build (the import above and the whole > installation0 -- once I switched to VC++ from MinGW. > > <snip info, ack> > > Regards, > mk > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > -- Patrick Marsh Graduate Research Assistant School of Meteorology University of Oklahoma http://www.patricktmarsh.com
On Tue, Jan 27, 2009 at 9:27 AM, Nils Wagner <nw...@ia...> wrote: >> If you want to only return a single point, you can write >>a custom >> picker function to return only the point closest to the >>click point. >> > > Unfortunately, I am not sure how to implement a custom > picker function. > > Any pointer would be appreciated. The example I pointed you to in my first post has an example of a custom picker function. It is in the section labelled "picking with a custom hit test function" http://matplotlib.sourceforge.net/examples/event_handling/pick_event_demo.html We've taken a lot of time to write the documentation and examples. When you ask us questions on the mailing list and we point you to documentation and examples, please take the time to read them. One reason we wrote them is so that we would not have to continuously solve the same problems over and over again on the mailing list. I'm happy to help if you find the documentation or examples confusing, but it will serve us both if you spend some time trying to digest them. JDH
On 2009年1月27日 08:57:17 -0600 John Hunter <jd...@gm...> wrote: > On Tue, Jan 27, 2009 at 8:18 AM, Nils Wagner > <nw...@ia...> wrote: >>> Thank you very much for your response. >>> The horizontal distance between consecutive points is >>> 5. in my application. >>> >>> Is the value of picker linked to the distance ? >>> I mean >>> How should I use picker to circumvent multiple results ? > > The scalar value of the picker is a epsilon tolerance in >points (1 > point = 1/72 inches) so you will need to set this >distance to be small > enough to only overlap one point when you click. > > If you want to only return a single point, you can write >a custom > picker function to return only the point closest to the >click point. > Unfortunately, I am not sure how to implement a custom picker function. Any pointer would be appreciated. Thanks in advance. Nils
John Hunter wrote: > First of all, on the clean build, when you do > > import matplotlib._path > > do you still get the same error. No, it's working fine on the new build (the import above and the whole installation0 -- once I switched to VC++ from MinGW. <snip info, ack> Regards, mk
On Tue, Jan 27, 2009 at 7:09 AM, Marcin Krol <mr...@gm...> wrote: > John Hunter wrote: >> It might help if you recursively remove the buld directory, do a clean >> rebuld, capture the build output in a file, and post that here so we >> can see if we can get an idea what is going on > > Since it's over 250kB, I pasted it here: > > http://pastebin.com/f466bd0db First of all, on the clean build, when you do import matplotlib._path do you still get the same error. I don't know a ton about windows and even less about visual studio, but according to the build output you posted a _path.pyd file is built and apparently installed. It may be that it is trying to linking against some dll that is not on your system. There is a windows freeware program I used to use to debug this stuff, in which you could load the pyd file and see what it links against, which reported failures. Perhaps a windows guru can advise here. In the past, there was a bug in distutils that was forcing the compiler to link against msvcp71.dll which could be fixed by patching distutils. Don't know if this is related
On Tue, Jan 27, 2009 at 8:18 AM, Nils Wagner <nw...@ia...> wrote: >> Thank you very much for your response. >> The horizontal distance between consecutive points is >> 5. in my application. >> >> Is the value of picker linked to the distance ? >> I mean >> How should I use picker to circumvent multiple results ? The scalar value of the picker is a epsilon tolerance in points (1 point = 1/72 inches) so you will need to set this distance to be small enough to only overlap one point when you click. If you want to only return a single point, you can write a custom picker function to return only the point closest to the click point. JDH
On Tue, Jan 27, 2009 at 2:15 AM, Nils Wagner <nw...@ia...> wrote: > Hi all, > > Is it possible to restrict the mouse movements to the points of a graph > (curve tracking) ? No, but you can obtain the vertices of the line that are within a tolerance of the clicked point using the picking functions. See the tutorial at http://matplotlib.sourceforge.net/users/event_handling.html and the "pick*" demos at http://matplotlib.sourceforge.net/examples/event_handling/index.html JDH
On Tue, Jan 27, 2009 at 4:31 AM, Marcin Krol <mr...@gm...> wrote: > Hello Patrick, > > Thanks for reply! > >> I didn't catch on the first email you were trying to build for >> python2.6. I haven't been able to get matplotlib to build correctly >> with python2.6. I'm actually curious as to how you were able to build >> matplotlib using the win32_static folder since it doesn't contain the >> libs and header files for tcl/tk 8.5 which python2.6 is build against. > > I didn't do anything really, except I have had installed Python 2.5 on > the same system before. Maybe this left DLLs lying around and the > compiled matplotlib uses those old DLLs? > >> This was the original error for me and I had to modify the >> setupext.py to look for the tcl/tk 8.5 includes (which I had to >> manually add to win32_static). What happens if you try: >> >> import matplotlib.pyplot as plt >> x = range(0,100) >> y = range(0,100) >> plt.plot(x,y) >> plt.show() > > I have used win32_static_vs (I have VC++ 9.0 installed) and it just > worked! It displayed the graph and everything. > >> As for the error you specifically mentioned, have you checked to make >> sure that the correct dll exists? This error typically happens to me >> when the dll didn't build properly (if at all). > > How do I do that? After this successful build, I can't find any DLL in > the 'build' folder. I have unpacked matplotlib-0.98.5.2.win32-py2.6.exe > installer and it doesn't contain any dll either. It might help if you recursively remove the buld directory, do a clean rebuld, capture the build output in a file, and post that here so we can see if we can get an idea what is going on
Hello everyone, Newbie alert. How do I set the attributes of Line2D instance? I have: origline = plt.plot(origlist) valine = plt.plot(valist) plt.xlim(0,256) valine.set_color('r') valine.set_linewidth(2) I get: Traceback (most recent call last): File "C:/Python26/loadavg2.py", line 121, in <module> plotit(valist, smalist) File "C:/Python26/loadavg2.py", line 106, in plotit valine.set_color('r') AttributeError: 'list' object has no attribute 'set_color' WTF?? After all, Line2D api docs, e.g. http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines.Line2D.set_color clearly state there is set_color method to the Line2D instance! I get the same error with get_* methods. Regards, mk
Hello everyone, Got it now, plot() apparently returns a list and I have to unpack it, I feel silly now... Regards, mk
John Hunter wrote: > It might help if you recursively remove the buld directory, do a clean > rebuld, capture the build output in a file, and post that here so we > can see if we can get an idea what is going on Since it's over 250kB, I pasted it here: http://pastebin.com/f466bd0db Regards, mk
Hello everyone, Forget it, I was mistakenly passing a list of dictionaries to the pyplot function instead of passing a list of extracted values. Regards, mk
Before my work in 2004, the colors were not following the line color at all, which was clearly bad behavior. Now, there are two categories: filled markers (with edge color black and filling following the line color) and non-filled markers (with edge color following line color). The black edge of filled markers is a matter of style which I personally like and would not want to change. The thing that was up for dispute was only about what the edge color of filled markers should do when the filling is switched off. I see three ways to solve this: a) Leave it black. (current behavior) b) Switch mec to line color if mfc is either "none" or "white". c) Switch mec to line color if mfc is not "auto" b) or c) might be what people would expect and prefer, but I feared that it would be one step too many in built-in intelligence. But then - maybe c) would be ok? After all, switching from c) to a) by an explicit mec="k" is simple and obvious, the other way around takes a bit more. Greetings, Norbert Gary Ruben wrote: > Thanks John, > > That shows how long it is since I used line markers in my plots. Because > I use them so infrequently, I'm probably not the best one to suggest it, > but I think it would be nicer for the default colour to match the line > colour by default, or for an option to be added to allow its simple > selection without users having to search through the mailing list to > find Norbert's solution. If I was publishing a colour plot with line > markers I would definitely want to do this. > > Gary > > John Hunter wrote: > >> On Mon, Jan 26, 2009 at 6:17 AM, Gary Ruben wrote: >> >>> Has the mec always been black? I thought it used to be the same as the >>> line colour. I expected it to default to the line colour, as Che expected. >>> >> It's been this way since at least 2004: >> >> http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/lib/matplotlib/__init__.py?revision=540&view=markup >> >> JDH >> > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > >
Hello everyone, It's fine when I plot in interactive Python shell like so: import matplotlib.pyplot as plt plt.plot(valist) plt.show() However, I get an exception like in subject when I call it from function: def plotit(origlist, valist): plt.plot(origlist) plt.plot(valist) plt.show() (origlist and valist are lists of small floats, each 256 elems long) The exception: Traceback (most recent call last): File "C:\Python26\loadavg3.py", line 115, in <module> plotit(origlist, valist) File "C:\Python26\loadavg3.py", line 102, in plotit plt.plot(origlist) File "C:\Python26\Lib\site-packages\matplotlib\pyplot.py", line 2096, in plot ret = gca().plot(*args, **kwargs) File "C:\Python26\Lib\site-packages\matplotlib\axes.py", line 3277, in plot for line in self._get_lines(*args, **kwargs): File "C:\Python26\Lib\site-packages\matplotlib\axes.py", line 389, in _grab_next_args for seg in self._plot_1_arg(remaining[0], **kwargs): File "C:\Python26\Lib\site-packages\matplotlib\axes.py", line 243, in _plot_1_arg x, y, multicol = self._xy_from_y(y) File "C:\Python26\Lib\site-packages\matplotlib\axes.py", line 199, in _xy_from_y b = self.axes.yaxis.update_units(y) File "C:\Python26\Lib\site-packages\matplotlib\axis.py", line 939, in update_units converter = munits.registry.get_converter(data) File "C:\Python26\Lib\site-packages\matplotlib\units.py", line 137, in get_converter converter = self.get_converter( thisx ) File "C:\Python26\Lib\site-packages\matplotlib\units.py", line 137, in get_converter converter = self.get_converter( thisx ) File "C:\Python26\Lib\site-packages\matplotlib\units.py", line 137, in get_converter (snip lots of identical lines) converter = self.get_converter( thisx ) File "C:\Python26\Lib\site-packages\matplotlib\units.py", line 137, in get_converter converter = self.get_converter( thisx ) File "C:\Python26\Lib\site-packages\matplotlib\units.py", line 133, in get_converter if isinstance(x, np.ndarray) and x.dtype != np.object: RuntimeError: maximum recursion depth exceeded while calling a Python object Regards, mk
Hello Patrick, Thanks for reply! > I didn't catch on the first email you were trying to build for > python2.6. I haven't been able to get matplotlib to build correctly > with python2.6. I'm actually curious as to how you were able to build > matplotlib using the win32_static folder since it doesn't contain the > libs and header files for tcl/tk 8.5 which python2.6 is build against. I didn't do anything really, except I have had installed Python 2.5 on the same system before. Maybe this left DLLs lying around and the compiled matplotlib uses those old DLLs? > This was the original error for me and I had to modify the > setupext.py to look for the tcl/tk 8.5 includes (which I had to > manually add to win32_static). What happens if you try: > > import matplotlib.pyplot as plt > x = range(0,100) > y = range(0,100) > plt.plot(x,y) > plt.show() I have used win32_static_vs (I have VC++ 9.0 installed) and it just worked! It displayed the graph and everything. > As for the error you specifically mentioned, have you checked to make > sure that the correct dll exists? This error typically happens to me > when the dll didn't build properly (if at all). How do I do that? After this successful build, I can't find any DLL in the 'build' folder. I have unpacked matplotlib-0.98.5.2.win32-py2.6.exe installer and it doesn't contain any dll either. Regards, mk
Dmitrey ha scritto: > hi matplotlib developers and users, > let me inform you about the bug: > when I use > sudo aptitude install python-matplotlib > it downloads LOTS of auxilary packages (IIRC about 200 MB for download > and 400 MB for HDD after unpack, or kind of), still it doesn't work > after installation, it yields > > ImportError: No module named _tkinter, please install the python-tk package > > when I install python-tk (1.7 MB for download, very small size in > comparison with those 400 MB), all works OK. This is a dependency bug of the Kubuntu packaging system. It is most probably unrelated to Matplotlib upstream developement. You should report it to the Kubuntu bugzilla (after having looked if it has already been filed). By the way, the LOTS of ausiliary packages are most probably as needed as python-tk to make it work. Don't really understand what you mean by those kind of comparisons, but all complex packages have dependencies. It just seems Kubuntu missed one. Thanks, Massimo
hi matplotlib developers and users, let me inform you about the bug: when I use sudo aptitude install python-matplotlib it downloads LOTS of auxilary packages (IIRC about 200 MB for download and 400 MB for HDD after unpack, or kind of), still it doesn't work after installation, it yields ImportError: No module named _tkinter, please install the python-tk package when I install python-tk (1.7 MB for download, very small size in comparison with those 400 MB), all works OK. I hope you will have it fixed. Regards, Dmitrey
Hi all, Is it possible to restrict the mouse movements to the points of a graph (curve tracking) ? So far I am able to obtain the location of the mouse in data coordinates if the mouse is over an axes. A code snippet is attached. Thanks in advance. Nils
Hi all, I apologize if this was asked before. I just started adding legends to my plots and found the legend stile for a point-plot, i.e. a plot using points rather than lines to be a bit confusing. Example: pylab.plot(arange(5), arange(5), 'o', label="foo") pylab.legend() Will produce a legend which looks like "o o foo". Why are there two points? Can I force it to give me only one? Thanks! Regards, Maximilian -- View this message in context: http://www.nabble.com/legend-for-plots-with-points-tp21680968p21680968.html Sent from the matplotlib - users mailing list archive at Nabble.com.
Hi Marcin, I didn't catch on the first email you were trying to build for python2.6. I haven't been able to get matplotlib to build correctly with python2.6. I'm actually curious as to how you were able to build matplotlib using the win32_static folder since it doesn't contain the libs and header files for tcl/tk 8.5 which python2.6 is build against. This was the original error for me and I had to modify the setupext.py to look for the tcl/tk 8.5 includes (which I had to manually add to win32_static). What happens if you try: import matplotlib.pyplot as plt x = range(0,100) y = range(0,100) plt.plot(x,y) plt.show() As for the error you specifically mentioned, have you checked to make sure that the correct dll exists? This error typically happens to me when the dll didn't build properly (if at all). -- Patrick Marsh Graduate Research Assistant School of Meteorology University of Oklahoma http://www.patricktmarsh.com