SourceForge logo
SourceForge logo
Menu

matplotlib-users

From: Alexandar H. <vio...@gm...> - 2009年06月30日 16:33:34
Hello,
I've been struggling with this for a while now and have effectively two
issues. One, how can I define the range over which hexbin ... bins? And two,
how do I change the background color of a plot? The latter I thought would
be trivial, but nothing I've tried has worked. Let's take the example:
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
n = 100000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
#xmin = x.min()
#xmax = x.max()
#ymin = y.min()
#ymax = y.max()
xmin = 0
xmax = 10
ymin = 0
ymax = 30
plt.hexbin(x,y, cmap=cm.jet)
#plt.hexbin(x,y, cmap=cm.jet, extent=[xmin, xmax, ymin, ymax])
plt.axis([xmin, xmax, ymin, ymax])
plt.title("Hexagon binning")
cb = plt.colorbar()
cb.set_label('counts')
plt.show()
Let's say i'm only interested in the positive quadrant of the data, so I
only want to bin data in the range of 0-10 in x and 0-30 in y. The first
thing I tried was to use the extent option to only bin the specified range
of data, but that gives these errors:
[tesla:~/NMR/500-Tupp/IM7][349] HexBin.py
Traceback (most recent call last):
 File "HexBin.py", line 28, in <module>
 plt.hexbin(x,y, cmap=cm.jet, extent=[xmin, xmax, ymin, ymax])
 File "/usr/lib64/python2.5/site-packages/matplotlib/pyplot.py", line 1920,
in hexbin
 ret = gca().hexbin(*args, **kwargs)
 File "/usr/lib64/python2.5/site-packages/matplotlib/axes.py", line 5447,
in hexbin
 collection.update(kwargs)
 File "/usr/lib64/python2.5/site-packages/matplotlib/artist.py", line 548,
in update
 raise AttributeError('Unknown property %s'%k)
AttributeError: Unknown property extent
After that, I just set the plt.axis range to what I'm interested in.
However, the range not binned by hexbin shows up as white, instead of the
0-count blue. I've tried adding facecolor, edgecolor, axisbg, and who knows
what else as part of plt.hexbin, plt.axis, and plt.savefig, But most have no
consequence on the plot. plt.savefig(myname, facecolor='blue') successfully
changed everything blue except the white region within the plot.
So, where am I going wrong? I'm finding myself out of options and would
ideally not like to trim or add false points to my data just to get the axis
and colors correct.
Best,
Alex
From: Jeff W. <js...@fa...> - 2009年07月02日 03:21:51
Alexandar Hansen wrote:
> Hello,
>
> I've been struggling with this for a while now and have effectively 
> two issues. One, how can I define the range over which hexbin ... 
> bins? And two, how do I change the background color of a plot?
Alexandar: To change the background color to the lowest value in the 
colormap:
ax = plt.gca()
ax.set_axis_bgcolor(plt.cm.jet(0))
-Jeff
> The latter I thought would be trivial, but nothing I've tried has 
> worked. Let's take the example:
>
> import numpy as np
> import matplotlib.cm <http://matplotlib.cm> as cm
> import matplotlib.pyplot as plt
>
> n = 100000
> x = np.random.standard_normal(n)
> y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
> #xmin = x.min()
> #xmax = x.max()
> #ymin = y.min()
> #ymax = y.max()
> xmin = 0
> xmax = 10
> ymin = 0
> ymax = 30
>
> plt.hexbin(x,y, cmap=cm.jet)
> #plt.hexbin(x,y, cmap=cm.jet, extent=[xmin, xmax, ymin, ymax])
> plt.axis([xmin, xmax, ymin, ymax])
> plt.title("Hexagon binning")
> cb = plt.colorbar()
> cb.set_label('counts')
>
> plt.show()
>
>
> Let's say i'm only interested in the positive quadrant of the data, so 
> I only want to bin data in the range of 0-10 in x and 0-30 in y. The 
> first thing I tried was to use the extent option to only bin the 
> specified range of data, but that gives these errors:
>
> [tesla:~/NMR/500-Tupp/IM7][349] HexBin.py
> Traceback (most recent call last):
> File "HexBin.py", line 28, in <module>
> plt.hexbin(x,y, cmap=cm.jet, extent=[xmin, xmax, ymin, ymax])
> File "/usr/lib64/python2.5/site-packages/matplotlib/pyplot.py", line 
> 1920, in hexbin
> ret = gca().hexbin(*args, **kwargs)
> File "/usr/lib64/python2.5/site-packages/matplotlib/axes.py", line 
> 5447, in hexbin
> collection.update(kwargs)
> File "/usr/lib64/python2.5/site-packages/matplotlib/artist.py", line 
> 548, in update
> raise AttributeError('Unknown property %s'%k)
> AttributeError: Unknown property extent
>
>
> After that, I just set the plt.axis range to what I'm interested in. 
> However, the range not binned by hexbin shows up as white, instead of 
> the 0-count blue. I've tried adding facecolor, edgecolor, axisbg, and 
> who knows what else as part of plt.hexbin, plt.axis, and plt.savefig, 
> But most have no consequence on the plot. plt.savefig(myname, 
> facecolor='blue') successfully changed everything blue except the 
> white region within the plot.
>
> So, where am I going wrong? I'm finding myself out of options and 
> would ideally not like to trim or add false points to my data just to 
> get the axis and colors correct.
>
> Best,
> Alex
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> 
> ------------------------------------------------------------------------
>
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> 
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /