防止matplotlib对轴进行排序

时间:2016-01-16 15:48:19

标签: python matplotlib

考虑以下测试用例:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(10)
x2 = np.hstack((np.linspace(0.12312, 3.94, 5), np.linspace(-10.0121, -9.333411, 5)))

y = 2.0 * x1

fig = plt.figure(1)
ax = fig.gca()
ax.plot(x1, y)

fig = plt.figure(2)
ax = fig.gca()
ax.plot(x2, y)

fig = plt.figure(3)
ax = fig.gca()
ax.plot(x1, y)
ax.set_xticklabels(x2[ax.get_xticks().astype(int)])

plt.show()

我想用figure(2)原始排序来x2。但是当我将它与pyplot.plot一起使用时,它会自动排序并且会弄乱我的轴。

我可以手动设置figure(3)中的刻度标签,但我没有自动轴缩放,格式化等等。 我可能会用格式化程序,定位器等自己破解一些东西,但首先我想问:是否有正确的方法来实现我喜欢的东西?

1 个答案:

答案 0 :(得分:0)

我认为这种情节不可能。你可以用某种方式来管理它,就像你用图(3)所做的那样,但它完全违背了直觉或良好的实践。通常,如果您正在查看2D绘图,则假设每个轴都是连续刻度(升序或降序)。它甚至可以是对数或其他比例。