如何在一张图上绘制变化的线性方程(多个缝合在一起)

时间:2019-05-21 07:31:19

标签: python

对于此分配,我需要在一张图上显示几个线性方程,但是当到达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()

第一次尝试将产生一个图形,其中包含所有需要的线,但是运行时间太长(倾斜的线用于将两者连接,而其他的线则不能在相交之前继续)。 第二个甚至没有出现。我已经尝试了很多东西,以致丢失了大部分原始代码。

1 个答案:

答案 0 :(得分:0)

这是一个简短的脚本,可以解决您的绊脚石

  1. 导入pylab,获取 x 轴上的点(我更喜欢linspace保留两个端点,您已经使用过{{1} },但基本上是一样的

    arange
  2. 要定义线性函数,请使用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/0where

    NaN
  3. 最终,我们绘制了两个函数,添加了图例和网格,最后y1 = where(x<=5, 2*x+5, NaN) y2 = where(x< 5, NaN, 15.) 绘制了图:

    show()

enter image description here

糟糕,我忘了提到您可以串联plot(x,y1,label='linear') plot(x,y2,label='constant') legend() ; grid() ; show() 了,例如

where

enter image description here