Matplotlibのsavefigに最近追加されている機能
matplotlibは昔JPEG保存に手間がかかると聞いていたが、普通にできるようになっている。
qualityも指定できるようになっている。1-100で指定できるみたい。ただし、おおむね20未満は質だけが悪くなってあまりサイズの抑制効果が得られない。
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from mpl_toolkits.mplot3d import proj3d def orthogonal_proj(zfront, zback): width = zfront - zback; a = 1 / width b = - a * (zfront + zback) / 2 return np.array([[1,0,0,0], [0,1,0,0], [0,0,a,b], [0,0,0,zback]]) proj3d.persp_transformation = orthogonal_proj def main(): r = 50.0; theta = np.arange(0.0, 360.0, 30.0); x = np.array([]); y = np.array([]); z = np.array([]); for i in range(10): x_ = r * np.cos(theta / 180.0 * np.pi); y_ = r * np.sin(theta / 180.0 * np.pi); z_ = 10.0 * i * np.ones(x_.shape[0]); x = np.append(x, x_); y = np.append(y, y_); z = np.append(z, z_); X = np.array([x, y, z, np.ones(x.shape[0])]); fig = plt.figure() ax = fig.gca(projection='3d') ax.scatter3D(X[0], X[1], X[2]); ax.set_aspect('equal') plt.grid() plt.savefig('plot20180321.jpg', format='jpeg', quality=10); plt.show(); if __name__ == '__main__': main()