在matplotlib中使用波洛梅什时,我可以使用edgecolor参数获得网格。我希望这个网格正好是一个像素宽,没有反混叠:
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-文件。
发布于 2019-05-27 09:31:29
因为这个答案并没有真正说明如何设置pcolormesh的线宽参数来得到精确的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)这似乎适用于我一贯确保精确1像素宽的网格线与pcolormesh。
发布于 2016-08-17 11:53:19
基于这的回答,我使用了ax.grid,它生成了一个像素网格线,就像我想要的那样:
fig, ax = plt.subplots(1, 1)
ax.grid(True, which='minor', axis='both', linestyle='-', color='k')
ax.set_xticks(lon_grid, minor=True)
ax.set_yticks(lat_grid, minor=True)
ax.set_xlim(lon_grid[0], lon_grid[-1])
ax.set_ylim(lat_grid[0], lat_grid[-1])https://stackoverflow.com/questions/36720640
复制相似问题