bar verhält sich unregelmäßig

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Folgender Code funktioniert nicht:

Code: Alles auswählen

%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(12345)

df = pd.DataFrame([np.random.normal(32000,200000,3650), 
                   np.random.normal(43000,100000,3650), 
                   np.random.normal(43500,140000,3650), 
                   np.random.normal(48000,70000,3650)], 
                  index=[1992,1993,1994,1995])
# print (df)
bottom_1_min = df.loc[int("1992")].min()
bottom_1_max = df.loc[int("1992")].max()
diff_1 = bottom_1_max - bottom_1_min
bottom_2_min = df.loc[int("1993")].min()
bottom_2_max = df.loc[int("1993")].max()
diff_2 = bottom_2_max - bottom_2_min
year = ["1992", "1993"]
diff = [diff_1, diff_2]
if isinstance(diff_1, np.generic):
    print (diff_1)
plt.bar(year, diff)
plt.show()
Die Fehlermeldung ist, dass plt.bar nicht funktioniert: unsupported operand type(s) for -: 'str' and 'float'
Jedes Tutorial erzählt mir, dass mein Code funktionieren müsste! Was ist falsch?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich weiß nicht welches Tutorial du meinst. Aber was ist der Unterschied zwischen 1234 und “1234” und int(“1234”)?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Dein Code tut ja auch. Jedenfalls der, den Du hier gepostet hast.
Wie lautet denn der komplette Traceback.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Brando,

bei mir funktioniert es ohne Probleme. Schwer zusagen, was bei dir anders ist.

Ich verwende:
matplotlib==3.3.4
pandas==1.2.5
python 3.9
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Weiß nicht welche Version ich habe! Aber ich musste folgendes machen, damit das DATUM in der x Achse erscheint:

Code: Alles auswählen

fig, ax = plt.subplots()
#create chart
ax.bar( OfCall, #x-coordinates of bars
       height= mean_b, #height of bars
       yerr= l_sem, #error bar width
       capsize=4) #length of error bar caps
ax.set_xticks(OfCall)
ax.set_xticklabels(['1992', "1993"])
Antworten