Ich benutze plot(x,y,'r')
um einen roten Kreis zu zeichnen. x und y sind Arrays, so dass, wenn sie als (x,y) gepaart und gezeichnet werden, alle Punkte eine Kreislinie bilden.
fill(x,y,'r')
zeichnet einen roten Kreis, der rot ausgefüllt (oder eingefärbt) ist.
Wie kann ich den Kreis auf der Innenseite weiß lassen, aber außerhalb des Kreises bis zu den Achsengrenzen füllen?
Ich habe die Verwendung von fill_between(x_array, y1_array, y2_array, where)
aber nach ein wenig spielen mit ihm ich glaube nicht, dass das für meine x,y Arrays funktionieren wird. Ich dachte an fill_between()
außerhalb des Kreises und innerhalb eines Quadrats, das durch die Achsengrenzen definiert ist, aber ich glaube nicht, dass fill_between()
fähig ist Ich bin mir sicher, dass ich daraus eine Art Integralproblem machen könnte, bei dem Delta x und Delta y gegen Null gehen, aber das will ich nicht.
Wenn jemand sehen kann, dass ich etwas übersehe mit fill_between()
lassen Sie es mich bitte wissen.
Alles, was ich wirklich brauche, ist Maskierung aus Zahlen in einem 2D-Array, die sich außerhalb dieser Grenze des Kreises mit x und y erstellt, so dass, wenn das 2D-Array als ein Farbdiagramm oder Kontur angezeigt wird, innerhalb des Kreises wird das Bild, und außerhalb wird weiß-aus sein.
Kann dies stattdessen durch eine Maskierungstechnik des 2D-Arrays erreicht werden? Zum Beispiel durch die Verwendung von masked_where()
? Ich habe mich noch nicht damit befasst, werde es aber tun.
Irgendwelche Ideen? Danke
Bearbeiten 1: Hier ist, was ich habe die Erlaubnis zu zeigen, dass ich denke, wird mein Problem zu erklären.
from pylab import *
from matplotlib.path import Path
from matplotlib.patches import PathPatch
f=Figure()
a=f.add_subplot(111)
# x,y,z are 2d arrays
# sometimes i plot a color plot
# im = a.pcolor(x,y,z)
a.pcolor(x,y,z)
# sometimes i plot a contour
a.contour(x,y,z)
# sometimes i plot both using a.hold(True)
# here is the masking part.
# sometimes i just want to see the boundary drawn without masking
# sometimes i want to see the boundary drawn with masking inside of the boundary
# sometimes i want to see the boundary drawn with masking outside of the boundary
# depending on the vectors that define x_bound and y_bound, sometimes the boundary
# is a circle, sometimes it is not.
path=Path(vpath)
patch=PathPatch(path,facecolor='none')
a.add_patch(patch) # just plots boundary if anything has been previously plotted on a
if ('I want to mask inside'):
patch.set_facecolor('white') # masks(whitens) inside if pcolor is currently on a,
# but if contour is on a, the contour part is not whitened out.
else: # i want to mask outside
im.set_clip_path(patch) # masks outside only when im = a.pcolor(x,y,z)
# the following commands don't update any masking but they don't produce errors?
# patch.set_clip_on(True)
# a.set_clip_on(True)
# a.set_clip_path(patch)
a.show()