概要
デフォルト設定だとタイトルに書いた通りの現象が起こります。網目模様が出て図が汚くなります。
実験
こんな単純なコード。
import numpy as np import matplotlib.pyplot as plt def main(): xx, yy = np.meshgrid(np.arange(0, 10, 0.1), np.arange(0, 10, 0.1)) zz = np.zeros(xx.shape) zz[xx < 5] = 1 plt.pcolormesh(xx, yy, zz, alpha=0.03) plt.savefig("result.png") if __name__ == "__main__": main()
こんな感じで汚くなります。ちょっと人には見せられない図です。
対策
これはシェーディングに問題があります。shading="gouraud"を指定するとよくなります。
matplotlib.axes.Axes.pcolormesh — Matplotlib 3.1.0 documentation
また、それでも不満が残る場合はメッシュを細くすると相対的に解消されます。
この組み合わせでちょっと(というかだいぶ)遅くなりますが、我慢しましょう。
import numpy as np import matplotlib.pyplot as plt def main(): xx, yy = np.meshgrid(np.arange(0, 10, 0.02), np.arange(0, 10, 0.02)) zz = np.zeros(xx.shape) zz[xx < 5] = 1 plt.pcolormesh(xx, yy, zz, alpha=0.03, shading="gouraud") plt.savefig("result.png") if __name__ == "__main__": main()
なんか濃さが違う気もしますが、よくなりました。濃さはalphaで調整してください。
まとめ
これで変なダサい図を出さなくても済むようになると思います。