我尝试自动为PatchCollection
中的每个Patch
指定一个颜色Map表(如tab20
)中的颜色。
from matplotlib.collections import PatchCollection
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,5))
coords = [
(0, 0),
(1, 2),
(1, 3),
(2, 2),
]
patches = [plt.Circle(coords[i], 0.1) for i in range(len(coords))]
patch_collection = PatchCollection(patches, cmap='tab20', match_original=True)
ax.add_collection(patch_collection)
ax.set_xlim(-1, 3)
ax.set_ylim(-1, 4)
plt.axis('equal')
但是上面的代码是用相同的颜色画每个圆的,颜色怎么循环呢?
2条答案
按热度按时间ddrv8njm1#
这里我对
tab20
色彩Map表进行了 * 采样 *,因此RGBA数组cmap.colors
正好有20个不同的条目,然后我将此RGBA数组赋给每个集合都接受的关键字参数facecolors
。不仅仅是为了美观,我还添加了一个颜色Map表,这样就可以识别圆圈的绘制顺序。
i86rm4rw2#
这将从选定色彩Map表中的固定颜色子集为每个面片指定颜色,并根据需要重复:
输出:
这将通过使用numpy生成随机数列表,然后使用面片对象
set_array
方法,从选定的颜色贴图中提供随机颜色:输出:
我不认为
match_original=True
是必要的,因为你想改变原始补丁的默认颜色。我相信还有其他方法可以做到这一点。这篇文章很有帮助:setting color range in matplotlib patchcollection