我有一个代码,可以创建下面的图:
放大这条线,我们可以看到它不是黑色的,而是黑色的核心,侧面呈灰色/略微透明(见下图)。有没有可能让这条线完全变黑?
下面是用于绘图的代码:
import matplotlib.pyplot as plt
import numpy as np
plt.plot([10,10],[10,20],color='k',linewidth=1)
plt.show()
增加dpi不起作用,我希望线宽保持不变。
我有一个代码,可以创建下面的图:
放大这条线,我们可以看到它不是黑色的,而是黑色的核心,侧面呈灰色/略微透明(见下图)。有没有可能让这条线完全变黑?
下面是用于绘图的代码:
import matplotlib.pyplot as plt
import numpy as np
plt.plot([10,10],[10,20],color='k',linewidth=1)
plt.show()
增加dpi不起作用,我希望线宽保持不变。
1条答案
按热度按时间bweufnob1#
您看到的效果称为antialiasing,在计算机图形学中很重要,可以使以任何Angular 绘制的线条在以相同粗细绘制时看起来相似。
几乎总是,当以像素计算时,距离的度量值不是整数值。如果没有抗锯齿,x和y位置需要舍入到最近的像素。
plt.plot()
(以及类似的函数)有一个可选参数antialiased=
,您可以将其设置为False
以查看情况。根据您的具体应用程序,这可能对您有用。这里有一个例子。它使用
lw=0.2
来更强烈地显示效果。使用较粗的线条,同样的效果仍然存在,但不太明显。注意matplotlib以“points”(1/72英寸,类似于用于指示字体大小的“points”)来测量线条。由于不同的舍入和位置不落在整数像素上,一些线更粗,对角线看起来非常锯齿状。放大视图:
PS:下面是一个
plt.contour()
的例子:这是它看起来像整体和放大:
我用maptlotlib 3测试了这个。Windows上的5.3,支持“TkAgg”。
另一种方法是将图保存为矢量格式(例如例如
.svg
)并通过编辑器(如InkScape)进行进一步处理。