【发布时间】:2021-10-09 15:25:29
【问题描述】:
我目前正在使用 matplotlib,以便使用 matplotlib.pyplot.streamplot 创建特定矢量场的模块
在流图中的线条创建和着色之后,我正在尝试为绘图周围发散点周围的空白着色,我试图实现取决于周围白色像素距离的颜色渐变它。
有问题的流图是根据以下内容构建的:
xs=np.linspace(-10,10,2000)
ys=np.linspace(-10,10,2000)
因此,如果分歧位于(出于演示目的)(0,0),它将正好位于绘图的中间。
现在,我能想到的根据距离进行着色的唯一方法有点笨拙,因为它需要我:
-
在分歧点的顶部添加一个
matplotlib.patches.Rectangle,并使用图像中尚未出现的特定颜色。 -
将带有流线和矩形(流图中的每个发散点一个矩形)的绘图转换为
np.array -
找到矩形颜色的新坐标(它们表示从流图创建的新
np.array中的分歧点的位置)。 -
从彩色像素中计算出我想要的像素。
整个方法感觉笨重且过于复杂,而且显然比我能做的要慢。我确定有一种方法可以将 matplotlib 图中的坐标转换为 np.array 中的坐标,或者处理 matplotlib 中的着色,这将更容易。 遗憾的是,我还没有找到满足这一特定需求的解决方案。
提前感谢您提供的任何帮助!
编辑
我正在添加一个示例(不是我的代码,而是我希望实现的目标的表示)。
我想澄清在圆形补丁顶部添加patches.circle 的解决方案不是我的首选,因为我希望让我的绘画选项更加动态。
【问题讨论】:
-
你能添加一张图片来说明你想要做什么吗?你能添加一些代码来创建一个带有一些测试数据的类似图吗?你如何定位分歧?你看Matplotlib: How to increase colormap/linewidth quality in streamplot?了吗?
-
@JohanC 添加了一张图片,遗憾的是我尝试了各种方法,但都抓到了,所以我目前在这个问题上没有线索,但如果它有帮助,我试图实现图片中的内容,只有我想相应地为每个像素着色,同时保持黑线完好无损。
-
也许我不明白你的问题,但我只是在后台使用
pcolormesh或contourf绘制差异,使用灰度和可能的某种透明度,并且最重要的是流图 -
@gboffi 我需要解决的问题是,我需要根据距离以特定顺序为分歧点周围的白色像素着色。编辑:我需要的是一种方法来了解 numpy 数组中像素的坐标相对于它在绘图本身中的位置的位置。
标签: python numpy matplotlib