2016-06-30 15 views
3

Ich mache einige Plotten mit Cartopy und Matplotlib, und ich produziere ein paar Bilder mit dem gleichen Satz von Punkten mit einer anderen Domain-Größe in jedem Bild gezeigt. Wenn meine Domain-Größe größer wird, bleibt die Größe jedes geplotteten Punktes fest, so dass die Dinge beim Herauszoomen zerknautscht, überlagert und im Allgemeinen unordentlich werden. Ich möchte die Größe der Punkte ändern, und ich weiß, dass ich dies tun könnte, indem ich sie erneut zeichne, aber ich frage mich, ob es eine Möglichkeit gibt, ihre Größe zu ändern, ohne diesen Prozess ein anderes Mal zu durchlaufen.Ändern der Größe von Streupunkten in Matplotlib

das ist die Linie, die ich die Punkte plotten bin mit:

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

und das ist die Linie, die ich die Domain Größe ändern bin mit:

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

Jede Beratung wäre sehr geschätzt!

Antwort

0

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

Dies sind die Parameter, die nehmen plt.scatter und der s Parameter ist die Größe des Streupunktes so s ändern, was auch immer Sie mögen, so etwas wie so

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

Ich kenne den Parameter s, aber er wird verwendet, wenn Sie die Scatter-Funktion aufrufen, die die Punkte zuerst darstellt. Ich schaue, um die Größe der Punkte zu ändern, sobald sie bereits mit der Streufunktion geplottet worden sind. –

+0

Ok, entschuldige meinen Fehler, also musst du die Streupunkte dynamisch aktualisieren, das würde bedeuten, sie neu zu zeichnen. In diesem Beitrag finden Sie weitere Informationen http://stackoverflow.com/questions/10944621/dynamically-updating-plot-in-matplotlib – Alastair

2

scatter hat die Option set_sizes, mit der Sie eine neue Größe festlegen können. Zum Beispiel:

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) 

Es scheint, dass set_sizes nur Arrays akzeptiert, so für eine konstante Markergröße Sie so etwas wie tun könnte:

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

Oder für eine relative Veränderung, so etwas wie:

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

enter image description here enter image description here