ブログ

割とコンピュータよりの情報をお届けします。

2018年3月21日

matplotlib jpeg保存

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()

≫ 続きを読む

2018/03/21 コンピュータ   TakeMe