Я пытаюсь построить график столбцов с накоплением в процентах с 5 столбцами. 2 бара не имеют данных, но их нельзя исключить из графика. Я установил это значение NaN (потому что мне нужно будет вычислить средние позже). В этом случае одна из этих двух является первой записью в списке. В результате верхняя часть диаграммы не отображается. Я не понимаю, что когда я переключаю первое и второе, делая вторую запись NaN, проблем нет.
Код: здесь NaN - первое, 3 - второе, что не работает. Переключение NaN и 3 действительно работает (см. Изображения ниже)
import numpy as np
import matplotlib.pyplot as plt
from math import nan
#Data
goed1 = [nan,3,152,9, nan]
tot1 = [1,1,15,2,1]
total = [(i * 16 ) for i in tot1]
fout1 = np.zeros(5)
for i in range(len(goed1)):
fout1[i] = total[i] - goed1[i]
data = {'Goed': goed1, 'Fout': fout1}
#Grafiek
fig, ax = plt.subplots()
r = [0,1,2,3,4]
df = pd.DataFrame(data)
#naar percentage
totaal = [i + j for i,j in zip(df['Goed'], df['Fout'])]
goed = [i / j * 100 for i,j in zip(df['Goed'], totaal)]
fout = [i / j * 100 for i,j in zip(df['Fout'], totaal)]
#plot
width = 0.85
names = ('Asphalt cover','Special constructions','Gras revetments','Non-flood defensive elements','Stone revetments')
plt.bar(r, goed, color='#b5ffb9', edgecolor='white', width=width, label="Detected")
plt.bar(r, fout, bottom=goed, color='#f9bc86', edgecolor='white', width=width, label="Missed")
# Add a legend
plt.legend(loc='upper left', bbox_to_anchor=(1,1), ncol=1)
plt.title('Boezemkade')
# Custom x axis
plt.xticks(r, names, rotation = 20, horizontalalignment = 'right')
# Show graphic
plt.show()
Если кто-нибудь знает, как это исправить, помощь приветствуется.
Графики:
Сначала NaN:
NaN секунда: