2016-03-29 1 views
0

didn "t eine Antwort darauf findenGibt es eine einfache Möglichkeit, Kontur- oder Oberflächenkarten aus 3 Spalten in einem Pandas-Dataframe zu zeichnen?

meine Daten so aussehen:.

import pandas as pd  
mapDF = pd.DataFrame({u'N1': {0: 20, 1: 20, 2: 20, 3: 20, 4: 20, 5: 21, 6: 21, 7: 21, 8: 21, 9: 21, 10: 22, 11: 22, 12: 22, 13: 22, 14: 22, 15: 23, 16: 23, 17: 23, 18: 23, 19: 23, 20: 24, 21: 24, 22: 24, 23: 24, 24: 24}, 
    u'N2': {0: 50, 1: 51, 2: 52, 3: 53, 4: 54, 5: 50, 6: 51, 7: 52, 8: 53, 9: 54, 10: 50, 11: 51, 12: 52, 13: 53, 14: 54, 15: 50, 16: 51, 17: 52, 18: 53, 19: 54, 20: 50, 21: 51, 22: 52, 23: 53, 24: 54}, 
    u'optGain': {0: 1.119175, 1: 1.11189, 2: 1.0984430000000001, 3: 1.0648280000000001, 4: 1.0459499999999999, 5: 1.149848, 6: 1.154882, 7: 1.1460840000000001, 8: 1.096886, 9: 1.098012, 10: 1.1416869999999999, 11: 1.118763, 12: 1.118763, 13: 1.098276, 14: 1.068576, 15: 1.1165069999999999, 16: 1.128744, 17: 1.128744, 18: 1.1070770000000001, 19: 1.0678430000000001, 20: 1.100743, 21: 1.096325, 22: 1.087421, 23: 1.090177, 24: 1.089968}, 
    u'simGain': {0: 0.94936399999999999, 1: 0.94052000000000002, 2: 0.93819300000000005, 3: 0.90808299999999997, 4: 0.91296299999999997, 5: 0.94936399999999999, 6: 0.90771599999999997, 7: 0.90771599999999997, 8: 0.91296299999999997, 9: 0.85592699999999999, 10: 0.90232000000000001, 11: 0.90232000000000001, 12: 0.84629200000000004, 13: 0.75560000000000005, 14: 0.75560000000000005, 15: 0.92555200000000004, 16: 0.87239299999999997, 17: 0.87274600000000002, 18: 0.88428399999999996, 19: 0.83454799999999996, 20: 0.86954900000000002, 21: 0.88426899999999997, 22: 0.88746899999999995, 23: 0.82285200000000003, 24: 0.82285200000000003}}) 

und ich versuche, eine Konturkarte oder Oberflächendarstellung zu machen, wo N1, N2 die x, y-Achse ist und optGain Spalte ist der Wert versucht mit pylab oder plotlib, aber keiner nimmt in der DF und alle erfordern die Vermaschung der Daten.Dies ist umständlich, da ich nicht auf eine Funktion, sondern eine bereits vorhandene Daten plotten wollen jede Hilfe oder Zeiger wird geschätzt Danke!

+0

Bitte keine Screenshots posten; Versuchen Sie stattdessen, Dinge zu posten, die kopiert werden können. Vielen Dank. –

+0

versuchte es - aber es klebte alles durcheinander. wie auch immer - fügte es hinzu. danke für deinen Beitrag. – Shuki

+0

Matplotlib zeichnet immer Daten auf, nicht Funktionen. – Goyo

Antwort

1

Siehe die Antworten auf this question.

Im Allgemeinen können Sie dies tun, mit

import matplotlib.pyplot as plt 

plt.scatter(mapDF.N1.values, mapDF.N2.values, c=mapDF.optGain.values, s=500) 
plt.gray() 

plt.show() 

Es werden die Dinge in einem kontinuierlichen Grautöne cale der Werte zeichnen.


bearbeiten

Die oben wird eine Grauskala Streudiagramm ziehen. Wie in den Kommentaren von Syrtis Major zu lesen ist, versuchen Sie tricontour für ein 2D-Konturdiagramm. Mit dieser Funktion beachten Sie die colors Parameter, insbesondere:

Wenn ein Tupel von matplotlib Farbe args (string, float, rgb, usw.), werden verschiedene Ebenen in verschiedenen Farben in der angegebenen Reihenfolge aufgetragen werden.

So können Sie Ihre mapDF.optGain.values verwenden, um RGB-Farben für verschiedene Ebenen zu erstellen.

+0

Danke - obwohl es keine Farbkarte ist, kann ich die Werte nicht sehen und mit großen Datensätzen wird es schwierig sein, damit zu arbeiten. – Shuki

+0

Können Sie einen Link zu etwas, das eine Colormap ist, veröffentlichen? Die Terminologie könnte anders sein. –

+0

OK - ich denke, der korrekte Ausdruck ist ein Oberflächenplot - aber ich möchte es als eine 2D-Kontur mit Farben betrachten (wie topografische Karten). Ich werde die Frage umformulieren - danke nochmal – Shuki

Verwandte Themen