Matplotlib Pyplot条形图标签的位置与nan值不一致

时间:2016-08-22 05:59:00

标签: python matplotlib bar-chart axis-labels

我正在绘制包含缺失值的数据条形图(np.nan)。似乎当np.nan值出现在最后一个类别中时,x轴刻度的位置与没有np.nans或NaN值处于不同位置时的位置不同。

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

理想情况下,无论数据中是否存在NaN值,我都希望x轴标签位于同一位置。

2 个答案:

答案 0 :(得分:2)

如果您需要绘图上的特定范围,则可以明确设置它。在每个块添加之后,例如

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

enter image description here

答案 1 :(得分:0)

我找到了一个解决方案:

np.nan_to_num(y1) ...等

替换y1,y2,y3数组