Python 如何在绘制公式的特定分量时设置它们的限制?

Python 如何在绘制公式的特定分量时设置它们的限制?,python,Python,我想画一个简单的函数,展示两个工厂在30天内生产的香蕉数量,这两个工厂每天分别生产2和4根香蕉。 用方程式表示: y(t)=100+2t+4t 所以我的问题是,如果我想设定一个标准,让每天生产2根香蕉的工厂在10天后停止生产,该怎么办?如何对程序进行编码,以便在t=10时将“2t”组件从等式中删除 或者,如果我想代表一家新工厂,在t=15 如何添加/删除此类内容 这是我的密码: 我会像这样使用numpy.clip: from matplotlib import pyplot as plt im

我想画一个简单的函数,展示两个工厂在30天内生产的香蕉数量,这两个工厂每天分别生产2和4根香蕉。 用方程式表示:

y(t)=100+2t+4t

所以我的问题是,如果我想设定一个标准,让每天生产2根香蕉的工厂在10天后停止生产,该怎么办?如何对程序进行编码,以便在
t=10
时将
“2t”
组件从等式中删除

或者,如果我想代表一家新工厂,在
t=15
如何添加/删除此类内容

这是我的密码:


我会像这样使用
numpy.clip

from matplotlib import pyplot as plt
import numpy as np

t = np.arange(0, 30, 0.2)
t2 = t.clip(max=10)

banana_count = 100 + 2*t2 + 4*t

plt.plot(t, banana_count, 'k-', linewidth='2')
plt.axis([0, 30, 0, 200])
plt.show()

将它们视为单独的组件

from matplotlib import pyplot
import numpy
您有时间和基本阵列可以对其执行操作:

time = numpy.arange(0, 30, 0.2)
blank = numpy.zeros_like(time)
基本香蕉(100项)只是一个常量数组:

start_bananas = blank.copy()
start_bananas.fill(100)
然后考虑第一个工厂。有两天需要关注:第0天和第10天

factory_one = blank.copy()
day_0  = numpy.searchsorted(time, 0)
day_10 = numpy.searchsorted(time, 10)
从第0天到第10天,每天产生2个:

factory_one[day_0:day_10+1] = time[day_0:day_10+1] * 2
然后它保持不变:

factory_one[day_10+1:] = factory_one[day_10]
以工厂2为例:

factory_two = blank.copy()
从第15天开始,每天增加4:

day_15 = numpy.searchsorted(time, 15)
factory_two[day_15:] = time[:-day_15] * 4
香蕉总数是以下各项的总和:

bananas = start_bananas + factory_one + factory_two
然后可以绘制它们:

pyplot.plot(time, bananas, 'k-', linewidth='2')
pyplot.show()


有更有效的数学方法可以做到这一点,但我想了解基本原理。

我们不能使用if语句吗?然后建立一个新的方程?我想知道什么是最有效的方法。如何将if语句合并到代码中?你是说你会有两个等式,并且if语句会在“t=desired”发生后在使用这两个等式之间切换吗?这是一个快速而有用的解决方案,尽管第5行中的t1应该更改为t。@user155876是的,这是一个输入错误;)啊,好的。出于好奇,每次为方程的一个组成部分设置“blank.copy()”时,它到底是什么?blank只是一个大小合适的数组,填充了0。我复制它,这样我就不会一直更改相同的数组。
pyplot.plot(time, bananas, 'k-', linewidth='2')
pyplot.show()