我想在Python中使用matplotlib绘制传感器值的线性方程图。
有A、B、C、D、STD的参数,我想绘制输出(y)与传感器值(x)的关系图。如果传感器值小于STD,则该参数为y=Ax+B;如果传感器值大于STD,则该参数为y=C(x-STD)+D。如下图所示,传感器值以1秒间隔输出的位置表示为red dot on the graph。
我该怎么编码呢?
这是我目前为止的代码:
import matplotlib.pyplot as plt
import numpy as np
a = 0.1222
b = 66.268
c = 0.5200
d = 701.7080
STD = 5200
x = np.linspace(-10, 10, 1000)
y1 = a*x+b
y2 = c*(x*STD)+d
plt.plot(x, y1, label='y1=ax+b')
plt.plot(x, y2, label='y2=c(x*STD)+d')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Graph of y1 and y2')
plt.legend()
plt.show()
2条答案
按热度按时间wkftcu5l1#
你基本上有两个错误,所以你不能得到你想要的:
x*STD
而不是x-STD
加入方程(-10, 10)
限制没有多大意义,因此应该扩展它。以下是如何绘制分段线的示例:
你可以在上面再加一个红点,但原则应该是清楚的。
btxsgosb2#
我使用了你在评论中提供的值。像这样更新代码将给予两条线,红点和水平线和垂直线,如示例所示。注意…在本例中,红点(x=1)在第二行,但代码应该处理这两种情况。希望这就是你要找的...