下面的代码绘制


一个红色的矩形
一个黄色的矩形,上面有一个红色的矩形
黄色矩形


这导致下图

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

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

最佳答案

矩形未精确定位在所得图像的像素上,并且其线宽不是像素的整数倍。使图像在计算机图形学中仍然看起来不错的一种常见技术是使用抗锯齿。这将产生漂亮的图像,但不可避免地会导致您观察到结果。

但是,您可以关闭抗锯齿功能。

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


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

关于python - 当我在同一位置叠加两名艺术家时,最低的一位仍然以某种方式显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51653729/

10-12 17:53