2016-10-20 4 views
1

Hier ist meine fileExtra-Spur in Heatmap (Pandas)

I Grundstück Heatmap von dem folgenden Code:

import pandas as pd 
import matplotlib.pyplot as plt 

new = pd.read_csv(r'path_to_file') 
full_list=new.columns.values 
new = new[full_list[1:]] 
plt.pcolor(new, cmap='Blues') 
plt.show() 

Datei hat nur 11 Zeilen von Werten, aber aus irgendeinem Grunde 12 Zeilen erscheinen. Weißt du was falsch ist? So sieht die Ausgabe für mich aus: s

Antwort

2

Da ist nichts falsch. Erstens hat das nichts mit Pandas zu tun, damit wir, dass auslassen und betrachten das folgende Beispiel

import matplotlib.pyplot as plt 
import numpy as np 

a = np.random.randint(0,10,size=(11, 2)) 
plt.pcolor(a, cmap='Blues') 
plt.show() 

Wir erstellen ein Array mit 11 Zeilen und 2 Spalten und zeichnen es. Es zeigt auch eine 12. Reihe.

Die einfachste Lösung ist wahrscheinlich auf die Anzahl der Zeilen

plt.ylim([0,a.shape[0]]) 

in diesem Fall plt.ylim([0,11]) die Achse zu begrenzen nur.

Aber wir wollen mehr wissen ... Ist elf spezielle? Vielleicht sollten wir es herausfinden, indem wir ein paar andere Zahlen eingeben. 1 bis 10 funktionieren gut. 11 wird nicht. 12 wird, 13 nicht.
Also was ist das Besondere an diesen Zahlen, ist, dass Matplotlib nicht leicht gute Achsen-Marken finden kann, wenn es 11, 13, ... Entitäten geplottet werden soll. Dies wird von der Matplotlib locator entschieden.
Der schwierige Teil wäre jetzt, einen guten Locator für 11 Entitäten zu finden. Ich denke, es gibt keine, wie
plt.gca().yaxis.set_major_locator(MaxNLocator(nbins = 11))
nicht hier arbeiten. Aber das könnte jetzt auch eine andere Frage sein.