matplotlib 3D箭图中箭头的不匹配颜色

polkgigr  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(103)

我有一个奇怪的问题,在matplotlib的3d箭图上给箭头着色。
下面的最小示例正确地将底部(从散点图中)、轴和箭头的末端用相同的颜色着色

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

sp = 0.501
x, y, z = np.meshgrid(
    np.arange(-0.5, 1, sp), np.arange(-0.5, 1, sp), np.arange(-0.5, 1, sp)
)

X = x.ravel()
Y = y.ravel()
Z = z.ravel()

# Make some direction and size data for the arrows
C = np.random.random(X.shape)
U = Y * C
V = np.zeros_like(U)
W = np.zeros_like(U)

# Color
np.random.seed(0)
col = np.random.random(X.shape)
# Normalize
c1 = (col - col.min()) / col.ptp()
cm1 = plt.cm.hsv(c1)
# Repeat colors for each body line and two head lines
c3 = np.concatenate((c1, np.repeat(c1, 2)))
cm3 = plt.cm.hsv(c3)

fig = plt.figure()
ax3 = fig.add_subplot(111, projection="3d")
ax3.scatter(X, Y, Z, s=5, c=cm1)
ax3.quiver(X, Y, Z, U, V, W, length=0.5, colors=cm3)
plt.show()

字符串
并给出了这个情节


的数据
如果我将第一行更改为sp =0.500,则颜色不再匹配



在每种情况下,cm3数组中的相同值都传递给quivercolors参数

vhipe2zx

vhipe2zx1#

您指定颜色的方式看起来是正确的。我认为方向分量U有问题。不知道为什么,但是添加一个非常小的偏移量可以解决这个问题:U = U + 1e-10的值。


的数据

相关问题