我有一个奇怪的问题,在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
数组中的相同值都传递给quiver
的colors
参数
1条答案
按热度按时间vhipe2zx1#
您指定颜色的方式看起来是正确的。我认为方向分量
U
有问题。不知道为什么,但是添加一个非常小的偏移量可以解决这个问题:U = U + 1e-10
的值。的数据