如何在Pylab中将函数f(x,y)绘制为颜色渐变?

-4 投票
1 回答
2702 浏览
提问于 2025-04-20 17:26

我现在想要绘制一个函数 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

撰写回答