Гистограммы отображаются в том порядке, в котором они представлены. В этом случае нет необходимости создавать фрейм данных. Попробуйте следующее:
x=[s.replace('\n', '') for s in states]
y=np.array(active)
order = np.argsort(y)
xNew = [x[i] for i in order]
yNew = y[order]
plt.cla()
plt.bar(xNew,yNew, color="green")
plt.xticks(fontsize= 5, rotation=90)
plt.yticks(fontsize= 8)
plt.title("PLOTTERSCA")
plt.show()
Здесь мы переупорядочили все на основе значений y. Кроме того, xticks были повернуты, чтобы их было легче увидеть ...