gpt4 book ai didi

python - 绘制多边形时,如何在 Matplotlib 中将颜色值分配给顶点而不是面颜色?

转载 作者:行者123 更新时间:2023-12-04 09:36:46 24 4
gpt4 key购买 nike

我有关于 x、y 和颜色值的数据,它们都是 NxM 数组。通常,当使用来自 Matplotlib 的 Polygon 函数时,它需要每个面(这将是一个 1xM 数组)而不是 VERTEX 具有颜色值。但是,我的颜色数据是每个 VERTEX。所以,我的问题是有没有办法将我的顶点数据转换为单面颜色数据?或者更好的是,有没有办法使用每个顶点而不是每个面的颜色值来绘制多边形?
注意:我想要的与 MATLAB 的 patch 函数非常相似,您可以使用每个顶点的颜色值。
编辑:
在下面,您可以找到一个元素的数据示例。网格由许多元素组成,下面只是其中之一。 X 和 Y 是指坐标,C 是指每个坐标的颜色值。请注意,下面的数组实际上在原始代码中存储为列,因为还有许多其他元素。

import numpy as np

X = np.array([0,0.176611,0.343377,0.366506,0.390424,0.254526,0.117785,0.602218])
Y = np.array([0,0.0248673,0.0436277,0.0834644,0.123043,0.110448,0.0995953,0.0509885])
C = np.array([0.136649,0.114582,0.100576,0.102412,0.102754,0.104971,0.110123,0.120756])

最佳答案

要为顶点而不是面指定颜色,pcolormesh接受参数 shading='gouraud' .下面是一个例子:

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(0, 15, 8)
y = np.linspace(0, 10, 5)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)

fig, axs = plt.subplots(ncols=2, figsize=(12, 3))
cmap = 'plasma'
axs[0].scatter(X, Y, s=50, c=Z, cmap=cmap, edgecolors='black')
axs[0].set_title('given vertex colors')
axs[1].pcolormesh(x, y, Z, shading='gouraud', cmap=cmap)
axs[1].scatter(X, Y, s=50, c=Z, cmap=cmap, edgecolors='black')
axs[1].set_title('interpolated vertex colors')
axs[1].set_xlim(axs[0].get_xlim())
axs[1].set_ylim(axs[0].get_ylim())
plt.show()
example plot

关于python - 绘制多边形时,如何在 Matplotlib 中将颜色值分配给顶点而不是面颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62539984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com