在Matplotlib中向3d颤动图添加颜色

TC Proctor

我想在我的3d颤抖图中使用与色图相对应的颜色。该图的2d版本具有一个可选数组,该数组用于将颜色映射到箭头。如何在3D版本中创建相同的效果?

塔卡斯韦尔

3D颤动图是1.4中的一项全新功能(及其文档),其边缘可能仍然有些粗糙。在这种情况下,我们可以尝试使用这样一种事实,即将颤动实现为LineCollection(最终)继承自颤动ScalarMappable这意味着它知道什么是色彩映射表,并且返回的艺术家具有方法set_array

这里建立文档

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

fig = plt.figure()
ax = fig.gca(projection='3d')

x, y, z = np.meshgrid(np.arange(-0.8, 1, 0.2),
                      np.arange(-0.8, 1, 0.2),
                      np.arange(-0.8, 1, 0.8))

u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
     np.sin(np.pi * z))

q = ax.quiver(x, y, z, u, v, w, length=0.1, cmap='Reds', lw=2)
q.set_array(np.random.rand(np.prod(x.shape)))

plt.show()

在此处输入图片说明

但是,您会注意到磁头的颜色与轴的颜色不同,这是由于实现方式的实现细节所致,每个零件都以自己的线条绘制。

直接使用Norm和颜色映射函数并将结果传递给colors一个更好的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章