Python 如何在一个图形上绘制变化的线性方程(多个缝合在一起)
对于这个任务,我需要在一张图上显示几个线性方程,但是当到达x轴的一部分时,它必须改变所描绘的线性方程。我们不允许使用pylab和基本条件、数组、循环等之外的任何东西 已经尝试了几种方法,只需在图形上绘制每条线,这里的问题是这些线在不应该继续的时候继续。我似乎不能对每一行都设置限制。此外,我还尝试为x轴的每个部分创建一个循环,并为每个部分绘制不同的线,但收效甚微Python 如何在一个图形上绘制变化的线性方程(多个缝合在一起),python,Python,对于这个任务,我需要在一张图上显示几个线性方程,但是当到达x轴的一部分时,它必须改变所描绘的线性方程。我们不允许使用pylab和基本条件、数组、循环等之外的任何东西 已经尝试了几种方法,只需在图形上绘制每条线,这里的问题是这些线在不应该继续的时候继续。我似乎不能对每一行都设置限制。此外,我还尝试为x轴的每个部分创建一个循环,并为每个部分绘制不同的线,但收效甚微 STemp = ((-22/90)*latitude)+24 Depth = arange(0,2000,10) SSTemp = ST
STemp = ((-22/90)*latitude)+24
Depth = arange(0,2000,10)
SSTemp = STemp*1+(0*Depth)
DTemp = 2*1+(0*Depth)
c = -((((2-STemp)/800)*200)-STemp)
TTemp = (((2-STemp)/800)*Depth)+c
xlabel("Depth (Meters)",fontsize="large")
ylabel("Temperature (\u00B0C)",fontsize="large")
title("Temperature of Water vs Depth",fontsize="large")
plot(Depth, TTemp, 'b-', linewidth = 2, label = 'Thermocline')
plot(Depth, DTemp, 'b-', linewidth = 2, label = 'Deep')
plot(Depth, SSTemp, 'b-', linewidth = 2, label = 'Surface')
grid(True)
show()
while Depth[0]:
plot(Depth, SSTemp, 'b-', linewidth = 2, label = 'Surface')
while Depth[20]:
plot(Depth, TTemp, 'b-', linewidth = 2, label = 'Thermocline')
while Depth[199]:
plot(Depth, DTemp, 'b-', linewidth = 2, label = 'Deep')
show()
第一次尝试生成的图形包含所需的所有线,但运行时间太长(斜线用于连接两条线,而其他线不用于在交叉点之前继续)。
第二个甚至不再出现了。我已经尝试了很多东西,但是它丢失了大部分的原始代码。这里是一个简短的脚本,可以解决您的障碍
pylab
,获取x轴上的点(我更喜欢linspace
保留两个端点,您使用了arange
,但基本上是相同的)
,其中
,其参数在此应用中是一个条件和两个表达式,y?
的值是条件为真的第一个表达式,条件为假的第二个表达式。另一点是使用了
NaN
(不是数字),这是未定义数值表达式(例如,0/0
)结果的Python表示,我们之所以使用它,是因为在打印上下文中会导致线中缺少一个点。假设y=2x+5表示x5,在代码中,使用
where
和NaN
y1 = where(x<=5, 2*x+5, NaN)
y2 = where(x< 5, NaN, 15.)
where
s连接起来,例如
from pylab import *
x = linspace(0,10,101)
x1, x2 = 4, 6
y1 = where(x<=x1, 2*x+2, NaN)
y2 = where(x< x1, NaN, where(x<=x2, 10, NaN))
y3 = where(x< x2, NaN, 22-2*x)
for y, label in ((y1,'$y=2x+2$'), (y2,'$y=10$'), (y3,'$y=22-2x$')):
plot(x, y, label=label)
ylim((-0.2, 10.2)) ; legend() ; grid() ; show()
从pylab导入*
x=linspace(0,10101)
x1,x2=4,6
y1=其中(x
plot(x,y1,label='linear')
plot(x,y2,label='constant')
legend() ; grid() ; show()
from pylab import *
x = linspace(0,10,101)
x1, x2 = 4, 6
y1 = where(x<=x1, 2*x+2, NaN)
y2 = where(x< x1, NaN, where(x<=x2, 10, NaN))
y3 = where(x< x2, NaN, 22-2*x)
for y, label in ((y1,'$y=2x+2$'), (y2,'$y=10$'), (y3,'$y=22-2x$')):
plot(x, y, label=label)
ylim((-0.2, 10.2)) ; legend() ; grid() ; show()