2016-06-09 9 views
1

Ich habe DatenFehler matplotlib

city inc pop edu crime cult 
New-York 29343,00 8683,00 0,00 10,40 0,00 
Moscow 25896,00 17496,00 0,00 10,20 1,0 
Rome 21785,00 15063,00 0,00 14,20 1,00 
London 20000,00 70453,00 1,00 18,00 1,00 
Berlin 44057,00 57398,00 1,00 6,30 1,00 

Ich versuche Grundstück zu bauen und den Namen plot geben und Farbe zu Spalten ändern

desire_salary = (df[(df['inc'] >= int(salary_people))]) 
fig = plt.figure() 
result = desire_salary.pivot_table('city', 'cult', aggfunc='count').plot(kind='bar', alpha=0.75, rot=0, label="Presence/Absence of cultural centre") 
plt.xlabel("Cultural centre") 
plt.ylabel("Frequency") 
plt.set_title('Salary and culture') 
plt.plot(result[[0]], color='red') 
plt.plot(result[[1]], color='blue') 
plt.show() 

Aber es gibt Fehler AttributeError: 'module' object has no attribute 'set_title' und TypeError: 'AxesSubplot' object has no attribute '__getitem__'

+0

schreiben 'plt.title ("Einige Titel")' – Serenity

Antwort

2

Sie sind Versuchen Sie, die set_title-Methode aus der AxesSubplot-Klasse zu verwenden, aber Sie verwenden nicht den MLP-objektorientierten Ansatz. Es gibt zwei Möglichkeiten, dies zu korrigieren:

  1. Verwenden plt.title('Salary and culture')

  2. Wechseln Sie auf den flexibleren OO-Ansatz, und legen Sie den Titel und die Achsenbezeichnungen der entsprechenden Axes Methoden, wie ax.set_title, ax.set_xlabel, etc

    .

die Quelle des zweiten Fehler ist, dass, wenn Sie .plot auf der pivot_table rufen Sie eine matplotlib Rückkehr AxesSubplot Objekt, nicht die DataFrame. Dann versuchen Sie, plotten, es versucht, ein AxesSubplot Objekt zu indizieren.

desire_salary = (df[(df['inc'] >= int(salary_people))]) 
fig = plt.figure() 

# Create the pivot_table 
result = desire_salary.pivot_table('city', 'cult', aggfunc='count') 

# plot it in a separate step. this returns the matplotlib axes 
ax = result.plot(kind='bar', alpha=0.75, rot=0, label="Presence/Absence of cultural centre", ax=ax) 

ax.set_xlabel("Cultural centre") 
ax.set_ylabel("Frequency") 
ax.set_title('Salary and culture') 

ax.plot(result[[0]], color='red') 
ax.plot(result[[1]], color='blue') 
plt.show() 
+0

ich nicht haben erster Fehler, aber zweiter 'TypeError: 'AxesSublplot' Objekt hat kein Attribut '__getitem __'' ist nicht verschwunden –

+0

Ah, ich sehe dein Problem. Wenn Sie "plot" in der Pivot_table aufrufen, gibt das die Achsen zurück, auf denen es geplottet wird, nicht die Pivot-Tabelle. Ich werde die Antwort bearbeiten – tom

+0

Es ist seltsam. Die Farbe hat sich nicht geändert. Es ist blau zu allen Spalten –

0

versuchen "return_type = 'dict'" für Typeerror: 'AxesSubplot' Objekt hat kein Attribut 'getitem'

+1

Wenn Sie eine Antwort geben, ist es vorzuziehen, [eine Erklärung dafür zu geben, WARUM Ihre Antwort] (http://stackoverflow.com/help/how-to-answer) die eine ist. –