matplotlib:重新缩放轴标签

时间:2015-06-17 06:37:16

标签: python matplotlib scikit-learn scaling

我使用了来自sklearn.preprocessing的{​​{3}}来扩展X和Y轴上的数据,这会将我的数据压缩为-2 < x < 2。当我绘制这些数据时,我希望原始缩放比例用于刻度线。

我的代码如下:

scale(readings_array, copy=False)
plt.plot(readings_array)
ax = plt.gca()
ax.set_xticklabels(np.arange(0,24))
plt.ylabel("Total Traffic Volume")
plt.xlabel("Time")
plt.show()

看起来像:

plot

我真正想要的是xlabels为0-> 24(最小值为0),一天中的小时数,ylabels为0-> 600

1 个答案:

答案 0 :(得分:2)

我的第一个答案是:保留原始数据的副本。这是最简单,最pythonic的答案。

scaled_array = scale(readings_array, copy=True)
# do stuff like learning with scaled_array
plt.plot(readings_array)

如果您试图避免复制数据。使用StandardScaler()代替scale()。完成使用缩放数据后,您可以inverse_transform()数据:

scaler = sklearn.preprocessing.StandardScaler(copy=False)
readings_array = scaler.fit_transform( readings_array )
# do stuff with scaled data
readings_for_plotting = scaler.inverse_transform( readings_array )

或使用缩放因子来创建x_ticks和x_ticklabels:

my_xtick_labels = np.arange(0,25)
my_xticks = (my_xticks*scaler.std_) + scaler.mean_
plt.set_xticks( my_xticks )
plt.set_xticklables( my_xtick_labels )

我为拼写错误道歉。