iPad Pythonista3でmatplotlibを使う

## 0. はじめに
せっかく iPad mini 4 を持っていて，なおかつ Pythonista 3 を入れているので，もっとiPad mini を使おう，と思いたち，Macbook pro に入れている matplotlib の作図プログラムの雛形を iPad Pythonista 3 に入れ，その過程でさらなる効率化を図ることを目指し，作業を開始しました．

まずは作例を．これはiPad mini 4 のスクリーンショットです．
subplot により，３つのグラフを横並びにしてみました．

![fullsizeoutput_11c.jpeg](https://qiita-image-store.s3.amazonaws.com/0/129300/3548c0e4-0edf-6435-880d-81e312b41a71.jpeg)

## 2. やっていることの説明
### (1) 黒背景
Pythonista3のエディタを黒系背景としているので，

```py3
plt.style.use('dark_background')
```

により，黒背景白文字出力としました．


### (2) アスペクト比を1:1にする
以下はMacでは動きますが，Pythonista3のmatplotlibでは思ったように動作しないことに注意．

```py3
# アスペクト比1:1とするための失敗事例
#plt.gca().set_aspect('equal','datalim')
```

これを使います．

```py3
# アスペクト比1:1とするための成功事例
plt.gca().set_aspect('equal',adjustable='box')
```

### (3) subplot(131), title: Normal
主軸に数値を書き込み，グリッドを表示しています．

### (4) subplot(132), title: Grid
主軸に数値を書き込み，minor_locatorで指定した補助軸にもグリッドを表示しています．

以下のように，主軸でlocatorを指定しようとすると「Yaxisは定義されていないよ」というようなエラーが出て回りません．

```py3
# 失敗事例
#plt.gca().xaxis.set_major_locator(tick.MultipleLocator(0.2))
#plt.gca().yaxis.set_major_locater(tick.MultipleLocator(5.0))
```

下のように，主軸は，xticks, yticksで指定し，補助軸をminor_locatorで指定し，gdidでは which=’bith’ を指定します．

```py3
# 成功事例
plt.xticks(np.arange(xmin,xmax+dx,dx))
plt.yticks(np.arange(ymin,ymax+dy,dy))
plt.gca().xaxis.set_minor_locator(tick.MultipleLocator(1.0))
plt.gca().yaxis.set_minor_locator(tick.MultipleLocator(1.0))
plt.grid(which='both',color='#999999',linestyle='solid')
```

### (5) subplot(133), title: No-grid
下のコードにより，右縦軸，上縦軸を非表示にし，左縦軸と下横軸を表示しています．

```py3
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().yaxis.set_ticks_position('left')
plt.gca().xaxis.set_ticks_position('bottom')
```


## 3. プログラム全文

```py3

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as tick

fsz=10
xmin=0
xmax=15
dx=5
ymin=60
ymax=85
dy=5

fig=plt.figure(figsize=(6,3))
plt.rcParams['font.size']=fsz
plt.rcParams['font.family']='sans-serif'
plt.style.use('dark_background')


tstr='Normal'
plt.subplot(131)
plt.xlim([xmin,xmax])
plt.ylim([ymin,ymax])
plt.xlabel('x_axis')
plt.ylabel('y_axis')
plt.xticks(np.arange(xmin,xmax+dx,dx))
plt.yticks(np.arange(ymin,ymax+dy,dy))
plt.grid(color='#999999',linestyle='solid')
plt.gca().set_aspect('equal',adjustable='box')
plt.title(tstr,loc='left',fontsize=fsz)


tstr='Grid'
plt.subplot(132)
plt.xlim([xmin,xmax])
plt.ylim([ymin,ymax])
plt.xlabel('x_axis')
plt.ylabel('y_axis')
plt.xticks(np.arange(xmin,xmax+dx,dx))
plt.yticks(np.arange(ymin,ymax+dy,dy))
plt.gca().xaxis.set_minor_locator(tick.MultipleLocator(1.0))
plt.gca().yaxis.set_minor_locator(tick.MultipleLocator(1.0))
plt.grid(which='both',color='#999999',linestyle='solid')
#plt.gca().set_aspect('equal','datalim')
plt.gca().set_aspect('equal',adjustable='box')
plt.title(tstr,loc='left',fontsize=fsz)


tstr='No-grid'
plt.subplot(133)
plt.xlim([xmin,xmax])
plt.ylim([ymin,ymax])
plt.xlabel('x_axis')
plt.ylabel('y_axis')
plt.xticks(np.arange(xmin,xmax+dx,dx))
plt.yticks(np.arange(ymin,ymax+dy,dy))
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().yaxis.set_ticks_position('left')
plt.gca().xaxis.set_ticks_position('bottom')
plt.gca().set_aspect('equal',adjustable='box')
plt.title(tstr,loc='center',fontsize=fsz)


plt.tight_layout()
plt.show()
plt.close()
```

以　上