我想在图表上添加一个矩形。通过我发现的所有文档,默认情况下矩形应该是不透明的,透明度由alpha参数控制。但是,我不能让矩形显示为不透明,即使alpha = 1.我做错了什么,或者我还需要了解图表与补丁交互的方式吗?
这是一个玩具示例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from pylab import *
x = np.arange(10)
y = x
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)
rect = patches.Rectangle( ( 2,3 ), 2, 2, alpha = 1, ec = "gray", fc = "CornflowerBlue", visible = True)
ax.add_patch(rect)
plt.show()
答案 0 :(得分:11)
在一个轴内,顺序为 各种线条,标记,文字, 集合等出现是确定的 通过 matplotlib.artist.Artist.set_zorder() 属性。默认顺序是 补丁,行,文本,集合 线和补丁集合 出现在与常规相同的水平 线和补丁分别。
因此默认情况下会在线条下面绘制补丁。您可以通过指定矩形的zorder来更改顺序:
# note alpha is None and visible is True by default
rect = patches.Rectangle((2, 3), 2, 2, ec="gray", fc="CornflowerBlue", zorder=10)
您可以通过将ax.plot(x, y)
更改为lines = ax.plot(x, y)
并添加新的代码行print lines[0].zorder
来检查地块上行的zorder。当我这样做时,该行的zorder
为2.因此,矩形将需要zorder > 2
来模糊该行。
答案 1 :(得分:0)
您选择的facecolor(CornflowerBlue)具有半透明的外观,但实际上您看到的颜色对于alpha = 1是正确的。尝试使用不同的颜色,例如“蓝色”。 Matplotlib似乎确实将矩形贴片放在线下,但我不认为这是透明度问题。