下面的代码绘制
这将导致下图
我会假设第二个矩形看起来与第一个红色矩形完全相同,因为它的alpha值为1,因此下面的黄色矩形都不可见。
我想念什么吗?有可能解决这个问题吗?
预先感谢
马克
使用的代码:
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
fig = plt.figure()
axes = fig.add_subplot(1,1,1)
rect = Rectangle((0.2, 0.2), 0.1, 0.6)
rect.set_fill(False)
rect.set_edgecolor((1, 0, 0, 1))
axes.add_artist(rect)
rect = Rectangle((0.4, 0.2), 0.1, 0.6)
rect.set_fill(False)
rect.set_edgecolor((1, 1, 0, 1))
axes.add_artist(rect)
rect = Rectangle((0.4, 0.2), 0.1, 0.6)
rect.set_fill(False)
rect.set_edgecolor((1, 0, 0, 1))
axes.add_artist(rect)
rect = Rectangle((0.6, 0.2), 0.1, 0.6)
rect.set_fill(False)
rect.set_edgecolor((1, 1, 0, 1))
axes.add_artist(rect)
plt.show()
答案 0 :(得分:3)
矩形未精确定位在结果图像的像素上,并且其线宽不是像素的整数倍。使图像在计算机图形学中仍然看起来不错的一种常见技术是使用抗锯齿。这将产生漂亮的图像,但不可避免地会导致您观察到结果。
但是您可以关闭抗锯齿功能。
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
fig = plt.figure()
axes = fig.add_subplot(1,1,1)
rect = Rectangle((0.2, 0.2), 0.1, 0.6, antialiased=False)
rect.set_fill(False)
rect.set_edgecolor((1, 0, 0, 1))
axes.add_artist(rect)
rect = Rectangle((0.4, 0.2), 0.1, 0.6, antialiased=False)
rect.set_fill(False)
rect.set_edgecolor((1, 1, 0, 1))
axes.add_artist(rect)
rect = Rectangle((0.4, 0.2), 0.1, 0.6, antialiased=False)
rect.set_fill(False)
rect.set_edgecolor((1, 0, 0, 1))
axes.add_artist(rect)
rect = Rectangle((0.6, 0.2), 0.1, 0.6, antialiased=False)
rect.set_fill(False)
rect.set_edgecolor((1, 1, 0, 1))
axes.add_artist(rect)
plt.show()