当我在同一位置叠加两名艺术家时,最低的一位仍然以某种方式显示

时间:2018-08-02 12:31:09

标签: python matplotlib

下面的代码绘制

  • 红色矩形
  • 黄色矩形,顶部有红色
  • 黄色矩形

这将导致下图

enter image description here

我会假设第二个矩形看起来与第一个红色矩形完全相同,因为它的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()

1 个答案:

答案 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()

enter image description here