如何在Pylab中将函数f(x,y)绘制为颜色渐变?
我现在想要绘制一个函数 f(x,y)
,严格来说它是一个向量 A(r)
,如果较为挑剔的话,它还可以被看作一个场。
关于绘图:
我希望在一个XY坐标图上绘制这个图,其中 f(x,y)
用颜色渐变来表示。
举个例子,在场的原点附近,f(x,y)
的值会更大,因此颜色会更深一些!
任何帮助都非常感谢,我也知道有一些教程,我看过了。但是这些教程有个问题,就是我很难理解为什么它们都使用像这样的语法:
from something import *
或者 import something as something else
这样做的目的是什么呢?我一直被教导要简单地这样做:
import numpy
import pylab
然后我就很难理解程序的其他部分,因为语法不清晰,而且我找不到那种答案简单明了的教程!
1 个回答
1
这个用户有两个问题:为什么要给导入的模块起别名,以及如何“绘制”一个有两个参数的变量。给导入的模块起别名的原因是为了让代码更简洁,从而更容易阅读。很多包的名字都比较长,而且不容易重复。用户需要确保在一个包内别名是唯一的。使用 from something import *
虽然方便,但不太利于维护,因为这样会让你不清楚到底导入了什么。为了把这个和物理联系起来,就像写了 G=w*e^2,然后希望别人能理解“我用 G 表示能量,w 表示质量,e 表示光速。”
要绘制一个有两个变量的函数:
import numpy as np
import matplotlib.pyplot as plt
def f(x,y):
"Arbitrary function of two variables for demonstration"
return np.sinc(x**2 + y**2)
X, Y = np.meshgrid(np.arange(-5, 5, 0.01), np.arange(-5, 5, 0.01))
plt.imshow(f(x, y))
plt.show()
如果你真的想要灰度图,可以使用 plt.imshow(f(x, y), cmap=plt.cm.gray)
,如果你觉得 f(x, y)
的大值是亮的而不是暗的让你不舒服,可以把 f
替换成 -f
。