对于此分配,我需要在一张图上显示几个线性方程,但是当到达x轴的一部分时,必须更改所描绘的线性方程。不允许使用pylab和基本条件,数组,循环等之外的任何东西。
已经尝试了几种方法,只需在图形上绘制每条线,这里的问题是这些线在不应该继续时会继续。我似乎也不能对每个单独的行都设置限制。另外,我尝试为x轴的每个部分创建一个循环,并为每个部分绘制不同的线,但收效甚微。
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()
第一次尝试将产生一个图形,其中包含所有需要的线,但是运行时间太长(倾斜的线用于将两者连接,而其他的线则不能在相交之前继续)。 第二个甚至没有出现。我已经尝试了很多东西,以致丢失了大部分原始代码。
答案 0 :(得分:0)
这是一个简短的脚本,可以解决您的绊脚石
导入pylab
,获取 x 轴上的点(我更喜欢linspace
保留两个端点,您已经使用过{{1} },但基本上是一样的
arange
要定义线性函数,请使用from pylab import *
x = linspace(0,10,101)
,对于本应用程序,其参数是一个条件和两个表达式,where
的值是第一个表达式 where 条件为true,第二个其中条件为false。
另一点是使用y?
(不是数字),即我们使用的未定义数值表达式(例如NaN
)的Python表示形式。因为在绘图的情况下会导致直线中的缺失点。
假设我们要 x <= 5 的 y = 2 x + 5 和 x> 5的 y = 15 ,在代码中,使用0/0
和where
NaN
最终,我们绘制了两个函数,添加了图例和网格,最后y1 = where(x<=5, 2*x+5, NaN)
y2 = where(x< 5, NaN, 15.)
绘制了图:
show()
糟糕,我忘了提到您可以串联plot(x,y1,label='linear')
plot(x,y2,label='constant')
legend() ; grid() ; show()
了,例如
where