在matplotlib中使用pcolormesh时,我可以使用edgecolor参数获取网格。我希望这个网格正好是1像素宽,没有抗锯齿:
plt.pcolormesh(x_bin_edges, y_bin_edges, z, edgecolor='k', linewidth=1, antialiased=False)
但是这段代码给了我一个2-3像素宽的网格(小红色破折号作为视觉指南添加):
进一步减小线宽(比如0.1)可以得到1-2像素宽的网格线:
进一步降低线宽似乎没有做任何事情。如何将所有网格线缩小到1像素宽?
我正在使用Agg后端在python 2.7.8中的matplotlib 1.4.2中创建png文件。
答案 0 :(得分:1)
由于答案并没有真正阐明如何设置pcolormesh
的linewdith参数来获取正好1像素宽度的网格线,我花了一些力气对其进行了逆向工程,所以我发布了一些对我有用的代码并希望对希望避免使用ax.grid的其他用户有所帮助。与imshow显示的单元格相比,ax.grid经常错位一个像素。
将my_dpi
设置为显示器的dpi值,并告诉图形这是您正在使用的dpi值,然后使用此公式计算线宽。
my_dpi = 96.0
plt.figure(dpi=my_dpi)
my_linewidth=my_dpi/(1024*32)
这似乎对我有用,它可以始终如一地确保pcolormesh
恰好1像素宽的网格线。
答案 1 :(得分:0)