2016-08-22 5 views
0

Ich zeichne Balkendiagramme von Daten, die fehlende Werte enthalten (np.nan). Es scheint, als ob der np.nan-Wert in der letzten Kategorie erscheint, die X-Achsen-Ticks anders positioniert sind, als wenn es keine np.nans gibt oder wenn die NaN-Werte an einer anderen Position sind.Position von Matplotlib Pyplot Balkendiagrammbeschriftungen nicht konsistent mit Nan Werten

import numpy as np 
import matplotlib.pyplot as plt 

%matplotlib inline 

years = np.array([2011, 2012, 2013, 2014, 2015]) 
x = np.arange(len(years)) 
y1 = np.array([ 29., 10., 16., 29., np.nan]) 
y2 = np.array([ 29., 10., np.nan, 29., 16.]) 
y3 = np.array([ np.nan, 29., 29., 10., 16.]) 

f = plt.figure(figsize=(4,6)) 

ax = f.add_subplot(311) 
ax.bar(x, y1, align='center') 
ax.set_xticks(x) 
ax.set_xticklabels(years) 

ax = f.add_subplot(312) 
ax.bar(x, y2, align='center') 
ax.set_xticks(x) 
ax.set_xticklabels(years) 

ax = f.add_subplot(313) 
ax.bar(x, y3, align='center') 
ax.set_xticks(x) 
ax.set_xticklabels(years) 

plt.show() 

Output in jupyter notebook

Idealerweise würde ich die x-Achsen-Labels wie an der gleichen Stelle zu sein, unabhängig davon, ob es ist in den Daten NaN Werte.

Antwort

2

Wenn Sie einen bestimmten Bereich auf dem Grundstück benötigen, können Sie es nur explizit festgelegt. Nach jedem Block wird z.

ax.set_xlim(-0.5, years.size - 0.5) 

enter image description here

+0

Dank! Es klappt. – Bill

0

fand ich eine Lösung:

ersetzen die y1, y2, y3 Arrays mit np.nan_to_num(y1) ... etc

Verwandte Themen