我想在我的3d颤抖图中使用对应于颜色映射的颜色。该图的2D版本有一个可选数组,用于将颜色映射到箭头。我如何在3d版本中创建相同的效果?将颜色添加到matplotlib中的三维颤图中
5
A
回答
5
3D颤抖图是1.4的一个全新功能(它的文档)可能仍然有点粗糙的边缘。在这种情况下,我们可以尝试使用抖动实现为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()
然而,你会注意到头有不同的颜色比轴这是由于的方式实现细节它被实现,每个部分都被绘制成它自己的线。
直接使用Norm
和颜色映射函数并将结果传递给colors
可能是更好的方法。
+0
*颜色*需要什么样的参数?我会猜想一个nxmxkx3或nxmxkx4维数组,但这似乎不起作用。 – 2016-03-17 21:40:56
1
您可以使用colors
参数指定自定义颜色为每个箭头,虽然做这件事的方式是不是在所有直接的(作为matplotlib 2.0.0)。我已经在this issue中指定了实际绘制抖动图的逻辑以及指定着色的解决方法。您可以检查this gist一个简单的例子,它可以产生类似于图这一个:
总之,这里是要遵循的步骤:
- 假设你有一个列表(大小为x的* y * z)指定要绘制的每个矢量的RGB值(0〜1之间)。
- 过滤出对应于长度为0的向量的RGB(或RGBA)元组,因为它们不会被真正绘制。
- 让
[color_1, color_2, ..., color_n]
成为您在步骤2之后获得的列表,您应该指定colors=[color_1, color_2, ..., color_n, color_1, color_1, color_2, color_2, ..., color_n, color_n]
,因为实际上所有非零的箭头“ - >”的“ - ”部分(由1行组成)将先被绘制,然后是“>”部分(由2行组成)。
希望这会有所帮助。
相关问题
- 1. Matplotlib中丢失的颜色三维散点图
- 2. 将颜色条添加到表matplotlib
- 3. Matplotlib:添加颜色条到cartopy图像
- 4. 如何使用matplotlib将三维矩阵映射到三维散点图中的颜色值?
- 5. Matplotlib:如何将图例添加到散点图的颜色?
- 6. matplotlib自定义三维表面图的颜色图
- 7. matplotlib中三维函数的二维图
- 8. 如何在Gnuplot的三维图中将指定的颜色添加到二维曲线?
- 9. 的Python matplotlib倒钩/颤动地图的颜色不同组值
- 10. Matplotlib:颤抖二维数组
- 11. Matplotlib重绘后丢失三维散点图颜色
- 12. Matplotlib三维彩色图 - 有可能吗?
- 13. Matplotlib - 将子图添加到子图中?
- 14. Matplotlib:三种颜色的自定义颜色图
- 15. Matplotlib:用第三维(类别)改变线条颜色的二维绘图
- 16. 将颜色添加到颜色数组
- 17. matplotlib中的颜色
- 18. matplotlib:三维图中的网格
- 19. Matplotlib忽略三维图中的负值
- 20. matplotlib三维图中的虚线箭头
- 21. Matplotlib中的三维条形图问题
- 22. 将点和线添加到R中的三维散点图
- 23. Matplotlib:如何将标签添加到现有的颜色条?
- 24. matplotlib:如何指定二维历史图中的颜色水平
- 25. 将颜色条添加到3变量颜色图
- 26. 将图形拟合到matplotlib中的颜色条上
- 27. 三维散点图与matplotlib
- 28. matplotlib颤动阴谋的自定义颜色条
- 29. 如何将颜色层添加到paintComponent方法中的图像?
- 30. R中的颜色编码的三维绘图
你有没有尝试过把它作为关键字参数('颜色')传递给颤抖阴谋? http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#quiver表明它将关键字参数传递给'LineCollection',它将'colors'作为其参数之一。 – 2015-02-09 22:27:35
哦,看起来它可能比这更复杂一点,因为'colors'必须是RGBA元组列表。但是,如果您知道如何将颜色映射到点,那么也许可以生成列表。我认为查看颜色表例程可能会有所帮助:http://matplotlib.org/api/cm_api.html#module-matplotlib.cm – 2015-02-09 22:33:13
GH报告此问题可能值得一提。 – tacaswell 2015-02-11 05:19:53