我想使用 2 变量函数 Z(X,Y) 生成等值线图。但是,我想施加一个条件,当 X 小于/大于某个值时更改函数。这样的更改将允许我仅使用单行plt.contour(即我不想创建两个单独定义的函数,这会导致使用两个单独的绘图命令行)。
我继续遇到(我认为的)真理/逻辑错误。我的猜测是 numpy 网格网格的某些方面不符合函数的条件“切换”。下面附上显示该概念的简短代码以及完整的回溯错误。如果有任何不清楚的地方,或者我提供的内容不足以解释我的问题,请随时在下面发表评论。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0,50,100)
Y = np.linspace(0,50,100)
X, Y = np.meshgrid(X,Y)
def z(x,y):
if x < 20:
return np.sin(x) + np.cos(y)
else:
return np.tan(x * y)
Z = z(X,Y)
plt.contourf(X, Y, Z)
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar()
ValueError Traceback (most recent call last)
<ipython-input-29-7e200be093e6> in <module>
16
17
---> 18 Z = z(X,Y)
19
20 plt.figure(figsize=(8,6))
<ipython-input-29-7e200be093e6> in z(x, y)
9
10 def z(x,y):
---> 11 if x < 20:
12 return np.sin(x) + np.cos(y)
13
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()```
慕的地10843
守着一只汪
郎朗坤
相关分类