matplotlib 3D scatterplot with marker color corresponding to RGB values

跟風遠走 提交于 2019-11-29 06:54:33

Yes, you can do this, but it needs to be done through a separate mechanism than the c argument. In a nutshell, use facecolors=rgb_array.


First off, let me explain what's going on. The Collection that scatter returns has two "systems" (for lack of a better term) for setting colors.

If you use the c argument, you're setting the colors through the ScalarMappable "system". This specifies that the colors should be controlled by applying a colormap to a single variable. (This is the set_array method of anything that inherits from ScalarMappable.)

In addition to the ScalarMappable system, the colors of a collection can be set independently. In that case, you'd use the facecolors kwarg.


As a quick example, these points will have randomly specified rgb colors:

import matplotlib.pyplot as plt
import numpy as np

x, y = np.random.random((2, 10))
rgb = np.random.random((10, 3))

fig, ax = plt.subplots()
ax.scatter(x, y, s=200, facecolors=rgb)
plt.show()

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!