gpt4 book ai didi

python - 在 matplotlib 中为 3d 箭袋图添加颜色

转载 作者:太空狗 更新时间:2023-10-29 21:39:43 25 4
gpt4 key购买 nike

我想要在我的 3d 箭袋图中使用与颜色图相对应的颜色。绘图的二维版本有一个可选数组,用于将颜色映射到箭头。如何在 3d 版本中创建相同的效果?

最佳答案

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

基于文档 here

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()

enter image description here

但是,您会注意到头部的颜色不同,这是由于其实现方式的实现细节,每个部分都绘制为这是自己的线。

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

关于python - 在 matplotlib 中为 3d 箭袋图添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420504/

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