Jabberwock Stomp
Jabberwock Stomp

Reputation: 333

Changing size of scattered points in matplotlib

I am doing some plotting using cartopy and matplotlib, and I am producing a few images using the same set of points with a different domain size shown in each image. As my domain size gets bigger, the size of each plotted point remains fixed, so eventually as I zoom out, things get scrunched up, overlapped, and generally messy. I want to change the size of the points, and I know that I could do so by plotting them again, but I am wondering if there is a way to change their size without going through that process another time.

this is the line that I am using to plot the points:

plt.scatter(longs, lats, color = str(platformColors[platform]), zorder = 2, s = 8, marker = 'o')

and this is the line that I am using to change the domain size:

ax.set_extent([lon-offset, lon+offset, lat-offset, lat+offset])

Any advice would be greatly appreciated!

Upvotes: 4

Views: 4824

Answers (2)

Bart
Bart

Reputation: 10249

scatter has the option set_sizes, which you can use to set a new size. For example:

import matplotlib.pylab as pl
import numpy as np

x = np.random.random(10)
y = np.random.random(10)
s = np.random.random(10)*100

pl.figure()
l=pl.scatter(x,y,s=s)

s = np.random.random(10)*100
l.set_sizes(s)

It seems that set_sizes only accepts arrays, so for a constant marker size you could do something like:

l.set_sizes(np.ones(x.size)*100)

Or for a relative change, something like:

l.set_sizes(l.get_sizes()*2)

enter image description here enter image description here

Upvotes: 3

Ali
Ali

Reputation: 663

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

These are the parameters that plt.scatter take and the s parameter is the size of the scattered point so change s to whatever you like, something like so

plt.scatter(longs, lats, color = str(platformColors[platform]), zorder = 2, s = 20, marker = 'o')

Upvotes: 0

Related Questions