图中x轴的值不准确

时间:2017-12-08 09:23:05

标签: python matplotlib

我正在尝试使用matplotlib绘制特定路线(随时间加速)。该图表到目前为止工作正在显示(见图)。 J等于35并且表示加速度随时间的导数(在这种情况下是常数)。

import numpy as np
import matplotlib.pyplot as plt


def limits_acc_course():
limits_acc_course.t1 = 0.14285714285714285
limits_acc_course.t2 = 0.14285714285714285 + 0.10714285714285715
limits_acc_course.t3 = 2*0.14285714285714285 + 0.10714285714285715
limits_acc_course.t4 = 2*0.14285714285714285 + 0.10714285714285715 + 0.5*0.24714285714285716

limits_acc_course()

t_end = 2*limits_acc_course.t4
t_1 = np.linspace(0, limits_acc_course.t1)
t_2 = np.linspace(limits_acc_course.t1, limits_acc_course.t2)
t_3 = np.linspace(limits_acc_course.t2, limits_acc_course.t3)
t_4 = np.linspace(limits_acc_course.t3, limits_acc_course.t4)

tk1 = np.array([])
tk2 = np.array([])
tk3 = np.array([])
tk4 = np.array([])

for value1 in t_1:
    tk1 = np.append(tk1, value1*j)

for value2 in t_2:
    tk2 = np.append(tk2, limits_acc_course.t1*j)

for value3 in t_3:
    tk3 = np.append(tk3, (limits_acc_course.t3-value3)*j)

for value4 in t_4:
    tk4 = np.append(tk4, value4*0)
    if value4 == (2*limits_acc_course.t4-limits_acc_course.t3)*j:
        break

t = np.concatenate((tk1, tk2, tk3, tk4), axis=0)
t_neg = (-1)*np.concatenate((tk1, tk2, tk3), axis=0)

t_final = np.concatenate((t, t_neg), axis=0)   

t_range = np.linspace(0, t_end, t_final.size)


fig, t = plt.subplots()


t.plot(t_range, t_final)
t.get_xaxis().get_major_formatter().set_useOffset(False)
plt.show()

问题是绘图中的x坐标与计算值不匹配。

图中的x值(见图))应为: 0.142857142857 0.25 (或至少具有这样的准确度:0.1429)

图中的x值是。 0.144777 0.295348

我试图关闭偏移量,我已经玩了每个部分100到2500个值的范围,我试图对值进行舍入,但它也没有用。此外,我尝试在创建范围t_1到t_4时使用endpoint = False。

到现在为止,我已经没有了想法。

Course of acceleration over time

enter image description here

1 个答案:

答案 0 :(得分:0)

在一个轴上创建绘图,该轴将在屏幕上超过~500像素。 x轴显示1.1个单位。因此,每像素有1.1 / 500 = 0.0022个单位。鼠标光标无法知道其位置比1像素更准确。因此,鼠标光标显示的坐标精确到〜±0.0022单位。

观测坐标(0.144777)偏离实际坐标(0.142857142857)0.0019单位,完全在光标精度范围内。