Erstellen einer Farbleiste für ein mit plt.fill erstelltes Plot

8

Ich bin neu bei Python (war vorher ein IDL-Benutzer), also hoffe ich, dass ich das auf eine verständliche Art stelle. Ich habe versucht, ein Polardiagramm mit x Anzahl von Bins zu erstellen, wo die Daten in der Bin gemittelt werden und eine Farbe zugeordnet zu diesem Wert erhalten. Dies scheint gut zu funktionieren, während ich den Befehl plt.fill benutze, wo ich die Bin und dann die Füllfarbe definieren kann. Das Problem kommt, wenn ich dann versuche, einen Farbbalken dazu zu machen. Ich bekomme immer Fehler, die State AttributeError: 'Figur' Objekt hat kein Attribut 'autoscale_None'

Jeder Rat wäre hilfreich, danke.

%Vor%

* hier ist ein etwas besseres Beispiel für meine realen Daten, da überall Löcher fehlen, also habe ich in diesem Beispiel gerade einen großen in einem Viertel des Kreises gemacht. Wenn ich Meshing versucht habe, scheint der Code über diese Regionen zu interpolieren.

%Vor%

Und dann mit einer Vernetzung beteiligt ...

aus matplotlib.ml importieren Sie Griddata %Vor%     

Alexa Halford 18.01.2012, 19:12
quelle

2 Antworten

1

Ich habe also einen Workaround gefunden. Da ich von einer Region weiß, in der ich definitiv keine Daten haben werde, habe ich dort einige eingezeichnet. Ich habe sichergestellt, dass die Daten die gesamte Bandbreite dessen abdecken, was ich verpasse. Ich verdecke es dann (diese Region würde sowieso abgedeckt werden, es zeigt, wo sich die "Erde" befindet). Jetzt kann ich weitermachen und plt.fill so verwenden, wie ich es ursprünglich getan hatte, und den Farbbalken aus den zufällig eingetopften Daten verwenden. Ich weiß, das ist wahrscheinlich nicht der richtige Weg, aber es funktioniert und versucht nicht, meine Daten zu interpolieren.

Vielen Dank, dass Sie geholfen haben, das zu sortieren. und wenn Sie einen besseren Weg kennen, würde ich mich freuen, es zu hören!

%Vor%

    
Alexa Halford 19.01.2012, 22:52
quelle
7

colorbar benötigt Dinge, um eine Instanz von ScalarMappable zu sein, um daraus eine Farbleiste zu erstellen.

Da Sie jede Kachel manuell einstellen, gibt es nichts, was im Wesentlichen eine Farbleiste hat.

Es gibt eine Reihe von Möglichkeiten, es aus Ihrer Colormap zu fälschen, aber in diesem Fall gibt es eine viel einfachere Lösung.

pcolormesh macht genau das, was Sie wollen und wird viel schneller sein.

Als ein Beispiel:

%Vor%

Oder, wenn Sie nichtpolare Achsen bevorzugen, wie in Ihrem Beispielcode:

%Vor%

Hinweis: Wenn Sie die Grenzlinien etwas dunkler bevorzugen, geben Sie einfach linewidth=0.5 oder etwas ähnlich wie pcolormesh an.

Wenn Sie die Farbleiste in Ihrem Originalcode direkt aus der Farbpalette erstellen möchten, erstellen Sie eine Instanz von ScalarMappable und übergeben diese an colorbar . Es ist einfacher als es klingt, aber es ist ein bisschen ausführlich.

Als Beispiel in Ihrem ursprünglichen Code, wenn Sie etwas wie folgt tun:

%Vor%

Es sollte tun, was Sie wollen.

    
Joe Kington 18.01.2012 20:06
quelle

Tags und Links