我想用.set_facecolor()
方法填充垂直渐变(白色到红色)的多边形。我使用matplotlib.colors.LinearSegmentedColormap
定义了一个颜色Map图,但似乎不允许我直接将颜色Map图传递给.set_facecolor()
这样的颜色设置方法。如果我只传递一种颜色,它会成功运行-我如何传递一个渐变以具有预期的行为,颜色范围从白色底部到红色顶部?
工作代码段,具有固定颜色:
import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection
from matplotlib.patches import Polygon
from matplotlib import colors, patches
import numpy as np
fig,ax = plt.subplots(1)
patches = []
verts = np.random.rand(3,2)
polygon = Polygon(verts,closed=True)
patches.append(polygon)
collection = PatchCollection(patches)
ax.add_collection(collection)
collection.set_color("blue")
ax.autoscale_view()
plt.show()
不适用于自定义渐变的片段:
cmap = colors.LinearSegmentedColormap.from_list('white_to_red', ['white', 'red'])
fig,ax = plt.subplots(1)
patches = []
verts = np.random.rand(3,2)
polygon = Polygon(verts,closed=True)
patches.append(polygon)
collection = PatchCollection(patches)
ax.add_collection(collection)
collection.set_facecolor(cmap)
ax.autoscale_view()
plt.show()
1条答案
按热度按时间t5zmwmid1#
您可以用途:
ax.imshow
以创建具有梯度的图像,该图像定位于绘图的特定区域。set_clip_path
方法来掩蔽图像上的多边形区域。就像这样: