我正在使用matplotlib来绘制多边形贴片,并且想要用特定颜色填充每个多边形的部分,即制作饼图但是三角形或正方形或六边形。有没有办法改变饼图的形状或表示多边形的多种填充颜色?
谢谢!
更新:这是模仿我的意思:
答案 0 :(得分:4)
您可以创建Matplotlib collection
,然后传递数组/颜色列表以用于绘图。
考虑以下示例。首先得到一些假形状。
import matplotlib.path as mpath
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
def get_tri(xoff=0, yoff=0, up=1):
verts = [(0.0 + xoff, 0.0 + yoff),
(0.5 + xoff, 1.0 * up + yoff),
(1.0 + xoff, 0.0 + yoff),
(0.0 + xoff, 0.0 + yoff)]
p = mpath.Path(verts, [mpath.Path.MOVETO] + (len(verts)-1)*[mpath.Path.LINETO])
return p
shapes = [get_tri(xoff=x, yoff=y, up=o) for x,y,o in [(0.0, 0, 1),
(1.0, 0, 1),
(0.5, 1, 1),
(0.5, 1, -1)]]
从色彩图中获取颜色:
cmap = plt.cm.RdYlBu_r
colors = cmap(np.linspace(0,1, len(shapes)))
绘制形状:
fig, ax = plt.subplots(subplot_kw={'aspect': 1.0})
coll = mpl.collections.PathCollection(shapes, facecolor=colors, linewidth=3)
ax.add_collection(coll)
ax.autoscale_view()
请注意,由于我使用Paths
表示形状,我还使用PathCollection
。如果您使用Polygons
(或其他内容),则还应使用相应类型的集合,例如PolyCollection
。
因此,绘制不同颜色非常容易,棘手的部分可能是获取路径/多边形。如果您已经拥有它们,则可以将它们放在列表中以创建集合。