2016-04-18 14 views
0

Ich habe eine Funktion, die animierte Punkte erzeugt, hier ist der Teil, der ein Problem verursacht:Wie zeichne ich animierte Punkte in verschiedenen Farben mit Matplotlib?

dots = [dot() for i in range(N)] 

fig = plt.figure() 
ax = plt.axes(xlim=(0, 10), ylim=(0, 10)) 
d, = ax.plot([dot.x for dot in dots],[dot.y for dot in dots], 'ro', markersize=3)` 

so, Punkt ist der Name meiner Klasse von Objekten et Punkten ist die Liste, die N-Objekte enthält. Jeder Punkt ist rot eingezeichnet.

Was ich tun möchte, ist zum Beispiel, N-1 Punkte in rot und einen Punkt in blau zu zeichnen, ist es möglich mit dem Befehl ax.plot?

Danke für Ihre Hilfe

+0

Sie Ihre Punkte in zwei Listen aufgeteilt, stellen zwei getrennte Leitungen mit 'plot', eine für die rote, eine für die blauen Punkte. – roadrunner66

+0

danke das funktioniert – Jkev

Antwort

0

Ja, es ist möglich. Sie müssen die Punkte in zwei Sammlungen aufteilen. Es gibt eine Reihe von Möglichkeiten, dies zu tun; Hier habe ich einen Punkt aus der Liste extrahiert. Dann müssen Sie jede Sammlung separat auf derselben Leinwand darstellen.

import random 
import matplotlib.pyplot as plt 


class Dot(object): 
    def __init__(self, x, y): 
     self.x = x 
     self.y = y 

def get_random_dot(dots): 
    random.shuffle(dots) 
    return dots.pop() 

num_dots = 10 
dots = [Dot(random.random(), random.random()) for _ in range(num_dots)] 

fig = plt.figure() 
ax = plt.axes() 

selected_dot = get_random_dot(dots) 
d, = ax.plot([dot.x for dot in dots],[dot.y for dot in dots], 'r.') 
f, = ax.plot(selected_dot.x, selected_dot.y, color='blue', marker='o', linewidth=3) 

plt.show() 

enter image description here

Verwandte Themen