在不改变数据的情况下改变轴(Python)

时间:2014-05-31 00:28:38

标签: python matplotlib plot

我如何绘制一些数据,删除该数据创建的轴,并用不同比例的轴替换它们?

说我有类似的东西:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlim([0,5])
plt.ylim([0,5])
plt.plot([0,1,2,3,4,5])
plt.show()

这绘制了5x5图中的一条线,两个轴的范围从0到5。我想删除0到5轴,然后用-25到25轴替换它。这只会改变轴,但我不想移动任何数据,也就是说,它看起来与原始绘图只有不同的轴相同。我意识到这可以通过移动数据来完成,但我不想改变数据。

1 个答案:

答案 0 :(得分:5)

您可以使用plt.xticks查找标签的位置,然后将标签设置为位置值的5倍。基础数据不会改变;只有标签。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlim([0,5])
plt.ylim([0,5])
plt.plot([0,1,2,3,4,5])
locs, labels = plt.xticks()
labels = [float(item)*5 for item in locs]
plt.xticks(locs, labels)
plt.show()

产量

enter image description here


或者,您可以更改自动收报机格式化程序:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

N = 128
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(range(N+1))
plt.xlim([0,N])
plt.ylim([0,N])
ax.xaxis.set_major_formatter(ticker.FuncFormatter(lambda x, pos: ('%g') % (x * 5.0)))
plt.show()

enter image description here