sma4で論文用のグラフを作りたい


# 意外に高品質なグラフを作るのは難しい
大学生がグラフをレポートに貼りたい場合、表計算ソフト（Excel など）で作成するのが一般的[^1]なようです。また研究室配属された大学生とかだと Origin のような表計算ソフトよりもさらに高価格な市販グラフ作成専用ソフトもあります。そんな中 Sma4 は低価格シェアウェア（2,000 円）で、柔軟性・高品位な（出力メタファイル[^2]で保存）、ソフト自体が軽量などの特長があります（作者： 牧村哲也・鈴木智雄）。

Sma4は工学の分野においては散布図を描くのに非常によく用いられているグラフツールです。生協でも10万近い高額なグラフソフトが何本も販売されていますが、Sma4は必要十分ともいえる機能を兼ね備えています

かなり前になりますが、Windwosのヘルプファイルの形式が変わってしまいSma4のヘルプファイルがすんなり見ることができなくなったため、使い方がわからず彷徨う大学生がいるのではないかと思い、学生時代に作ったマニュアルをそのままこちらに移行しました。


[^1]: メタファイルはベクター形式の画像。拡大しても JPG のような画質劣化がない。旧式の wmf と EMF(拡張メタファイル) がある。
[^2]: 有料のソフトでいえば、Mathematica、MATLAB、Origin などがあり、化学系などはこれらがメジャーである。しかしながらこれらのソフトウェアは高価なものであるし、Excelの図表はなにかと融通が利かないことも多い。そこで、以下に研究に用いるのに相当なフリーのグラフソフトを示しておく。Ngraph／Octave／ParaView／Matplotlib ／Scilab／Rstudio／mjograph …etc なお、GnuplotなどCUIは学習コストが高いが、GUI  などに比べて、スクリプトさえあれば高い再現性を保持するため、アカデミックでは未だによく用いられる。

## 最初にこれだけは設定しておく
sma4アプリケーションは同一ディレクトリにあるCSVファイルを開くたびに、再読み込みを行うため、同じレイアウトのグラフを複数作成するときにCSVファイルを更新するだけでよい手軽さが使いやすさのポイントになっています。その設定をしておきましょう。

* 拡張子.smpをsma4に登録する。
* 軸の目盛りの設定は **Autoモードを使わずに、個別に設定**する。
* よく使う描写の設定は共通設定に保存しておくとよい。
* 設定の**【Data を共に保存する】**の設定を OFF にする。

## とりあえずグラフを1個作ってみよう

### グラフを描くためのデータを作ろう
Sma4のよさはなんと言ってもそのスピード感にあります。特にデータが大量にあり、一時的にその傾向を確かめたいときには特に圧倒的利便性を発揮します。その理由は数値データとグラフのメタデータ（グラフの色など見栄えのデータのこと）を Sma4 では分けて管理していることがキーになっています。

まず何かしらCSVの適当なグラフの材料データを用意してみましょう。次の図を参考に新たに作っても構いません。

### 実際にプロットしてみよう
データの準備ができたら〔データ〕→〔データファイルを開く〕を選択して、データを読み込ませます。このときのデータは.csv形式・.txt形式・.dat形式のいずれかでなければいけません。下はsma4にインプットするデータの概念図です。
![jpg3-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/4691ae48-fecb-e474-01d1-9eefbc5a8be4.jpeg)

データを読み込ませると下図のようなプロパティウィンドウが開くので、X軸およびY軸のColumnを設定します。

Columnは縦の列を示します。データファイルの左から何列目をX座標・何列目をY座標にするか決めます。またこの画面の下部分でデータの中身を見ることもできます。

エラーバーの設定もこのタブで行う事ができます。
![jpg3-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/a24a3ad2-f640-1ec6-b1f6-998f1653fa74.jpeg)

### グラフのプロットの設定
次に〔プロットタブ〕に移り、線種などの設定を行います。グラフのビジュアル的な部分を大きく左右する部分では ありますが、後からでも変更可能なのであまり頭を悩ます必要はありません。棒グラフを作成する場合にはプロットタ イプのドロップリストに入っていますから探してみてください。

また何度も同じ設定を繰り返す場合には共通保存機能を使いましょう。
 ![jpg3-3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/5aea02b2-049a-7656-75c2-79fbfd66221f.jpeg)
 
### ハイレベルな設定
最後に〔高度タブ〕に移り、少し専門的な設定も確認しておきましょう。第２軸のU軸やR軸の参照先の設定もここから行うことができます。

* 先頭スキップ）何行読み飛ばすかを設定する。通常「0」に設定。
* 読込行数）何行読み込むかを設定。「−1」はすべての行を読み込む。

これらの設定が済んだら〔OK〕をクリックして終了します。
![jpg3-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/822e0a90-a933-57c2-3d62-73e3a835a606.jpeg)

### 軸の設定
この時点でグラフは画面上に描写されているはずです。次にデータの特徴が正しく現れるように軸を設定しましょう。

再びプルダウンメニューの中から、〔グラフ〕→〔Clear All scale〕を選択してデータをフィールド上に収め、〔グラフ〕→〔X-Axies〕もしくは〔グラフ〕→〔Y-Axies〕をクリックして軸の設定ウィンドウを表示させてください（**軸をダブルクリックしても可**）。


#### 軸のスケール設定を行う
下図のウィンドウが現れたら、〔From〕の欄に軸の最小値を、〔To〕の欄に軸の最大値を入力します。また目盛りの間隔をオート設定でするのではなく、マニュアルで操作するためにはAuto stepのチェックボックスのチェックを外す必要があります。

* Increment）大きな目盛（主目盛）の間隔を指定する。
* Division）主目盛の間を何等分して、小さな目盛（副目盛）の表示かを指定する。Excelで言うところの補助目盛り。

また対数グラフなど特殊なグラフの作成に関する設定もここのタブです。
![jpg3-5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/a2b3c3da-610f-06c0-ac9b-62a5451ef970.jpeg)

#### 目盛りの設定
左の目盛タブでは、軸の〔線種〕や〔位置〕、〔色〕を設定することができます。よく使うグラフ描写の設定は共通設定に保存しておくとよいでしょう。

このとき目盛りを外側にするか、内側にするかはその研究分野の慣例によるところが大きいでしょう。筆者の分野では内側指定でした。
![jpg3-6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/62ce4adb-e301-381a-1e06-66a57a3d4272.jpeg)


#### 軸ラベルの設定
数字タブには軸ラベルの〔フォント〕や〔色〕を設定することができます。おすすめのグラフの初期設定を下に示しておきます。

* メニューバーの〔その他〕→〔設定〕→〔etc タブ〕に以下の設定をしておくと体裁を整える手間が減る。

```
スナップ《1mm》グリッド《5mm》
上付・下付文字のサイズ《80%》
上付き文字位置《30%》下付《10%》
```

* グラフの縦横比を固定しておくと発表用PPTに貼り込んだときに見やすくなる。**《縦10・横14目盛り》**
* 軸からの位置シフトを**3**にする。軸をダブルクリックして現れる〔数字タブ〕を位置シフト**3**くらいにした方が見やすい。
 
![jpg3-7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/9b96594f-179e-5634-0e96-9f997120ec82.jpeg)

 


### 文字の挿入
軸ラベルについては、プルダウンメニューの〔挿入〕→〔X軸タイトル〕もしくは〔挿入〕→〔Y軸タイトル〕を選択します。するとウィンドウが現れるので〔文字列〕のテキストボックスにタイトルを入力します。挿入した文字はマウスでドラッグして、グラフの適当な位置に移動することができます。

またグラフのタイトルをつけるときには、プル ダウンメニューの〔挿入〕→〔その他の文字列〕を選択する。文字列の変更にはラベルをダブルクリックすればできま す。なるべく**TrueType Font**を選択してください（制御コードを正しく動かすため）。

文字の回転は基本 90 度毎の回転になります。一応任意の角度（0.1 度単位）で回転することもできますが、**マウスで位置を操作する時などに不具合が発生するので使わない方が吉**です。

文字列はウィンドウで編集するだけではなく、制御コードを埋め込むことでリッチテキストにできます。

```
* 「W/㎡」 と入力したい場合 『W/m^2@』と入力。
* 下付き文字を入力したい場合 『A_1@』と入力。
* EN-DASH 『%Q150』と入力。
* 角度の°は『%Q176』と入力。
* 中黒・ は『%Q183』と入力。
* ×は『%Q215』と入力。
* 文字の任意拡大縮小。 『%S060』と入力。
* 改行コードは『\n』と入力。
* レギュラー体は『%R』と入力。
* Italic体は『%I』と入力。
* Bold体は『%B』と入力。
* Bold-Italic体は『%O』と入力。
* アンダーライン指定は『%U～%U』と入力。
* アッパーライン指定は『%L～%L』と入力。
* xy%は、文字を上下シフト『%Y+xy 字 %Y-xy 』と入力。
```
上の操作は文字コードを直接打ち込んで表現しています。255 までの数字を後ろにいれることができ、詳しいことはWindowsに付属のCharmap.exeを見てください。

```
* 色の変更『%K〇〇〇〇〇〇～』と入力。色の番号は16進数で入力すること。
* フォントの変更『%J〇〇〇〇〇〇%J～』と入力。
* Symbolの入力『%Ga%A～』と入力。
```

#### ファイル情報と連携した高度な操作
ファイル名と連携した特殊文字についても紹介します。以下で〇〇は、01から始めるファイルの番号(必ず２桁)を示します。

もし00を指定すると、一番初めに描画されるファイルを指定します。基本的にアルファベットが小文字だと表示内容や表示フォーマットが変わりますので、確認してみてください。

```
* データファイル名『%〇〇N』と入力。
* データのプロットタイプ『%〇〇E』と入力。
* データのスプラインや最小二乗曲線の線種『%〇〇F』と入力。
* データファイルの日付『%〇〇D』と入力。
* データファイルの時刻『%〇〇T』と入力。
* ファイルのxx行のyyカラムの内容『%〇〇Cxxyy』と入力。yyに00と入力すると行全体。もし上記の特殊文字の数字を打ち込まない場合には、コマンドの意味が以下のように変化します。
* SMPファイル名『%N』と入力。
* SMPファイルの日付『%E』と入力。
* SMPファイルの時刻『%T』と入力。
* 凡例のプロットの長さの変更『%H〇〇〇～』と入力。
* システム日付『%M』と入力。
* システム時刻『%V』と入力。
```

### フレームの設定
プルダウンメニューの〔グラフ〕→〔Frame〕を選択すると、フレーム全体の〔線 幅〕の設定などができます。また図のコピーの時に右クリックしながらの範囲選択でフレーム全体のコピー以外の特定領域コピーが可能となります。フレーム全体のコピーはショートカットキーの節を参考にしてください。

### 数式変換
数式変換では変数として、x,yが使用できます。使用可能な演算子は、四則演算とべき乗です。

また、定数設定コマンドによる定数、及び円周率πも用いる事が出来ます。各ファイルのＸ値変換やＹ値変換では、コラム間の演算をすることも出来ます。

これは、例えばＹ値にコラム３の値を加えたい場合には、Ｙ値の変換数式に、`Y+#0003`を指定します (#00 の後に、２桁のコラム数を書きます)。

また、#0203 の様な場合は、２番目に描画されるファイルのコラム３を示します。ただし、Ｘ (Ｙ) 値の読み取り行数と#????で指定されるファイルの読み取り行数とが異なる場合など注意が必要です。使用可能な関数には以下の通りです。

``` 
* 絶対値 abs()
* 平方根 sqrt() 
* 指数 exp() 
* 指数対数 ln()
* 常用対数 log()
* サイン sin()
* コサイン cos()
* タンジェント tan()
* 逆サイン asin()
* 逆コサイン acos()
* 逆タンジェント atan()
* ハイパボリックサイン sinh()
* ハイパボリックコサイン cosh()
* ハイパボリックタンジェント tanh()
* 差分 dif()
* 積分 integ()
* 階段関数 theta()
* デルタ関数 delta()
* 誤差関数 erfc()
* 最大値 max()
* 最小値 min()
* べき関数 pow
* ガンマ関数 gamma
* ベータ関数 beta
```
最大や最小はわざわざExcelで加工しなくても済むようになるので結構使うかもしれませんね。

### グラフの出力
作成したファイルはベクトルファイルで保存するのが良いでしょう。〔ファイル〕→〔エクスポート〕→〔メタ  ファイル形式で出力〕で wmf 形式で出力。

100KB程度のデータサイズで拡大縮小しても解像度が下がらないので利便性が非常に高いファイル形式です。

ちなみに通常のBMP形式で保存したい場合は〔編集〕→〔画像をコピー〕を行い、Photohop に一度貼り付けてから保存すると良いでしょう。


### 便利なショートカットキー
研究で多くのデータを処理しなくてはいけない以上、効率化は重要なキーとなります。sma4で特に気を付けてほしいのは 、`Ctrl`+`C`が先にソフトウェアで予約されていて使えないこと。オブジェクトを単にコピーしたいときには右クリックからコピーを選択します。

* `Ctrl`+`X`）X軸の設定
* `Ctrl`+`Y`）Y軸の設定
* `Ctrl`+`F`）フレームの設定
* `Ctrl`+`G`）定数の設定
* `Ctrl`+`S`）上書き保存
* `Ctrl`+`N`）新しいグラフの追加
* `Ctrl`+`Z`）もとに戻す（失敗することが多い）
* `Ctrl`+`M`）マクロを読み込む

## 終わりに
これでSma4の機能の8割程度は解説したと思います。まだ関数描画、最小二乗法による近似やマクロなどニッチな機能はありますが、そんな複雑な機能ではないのでメニューバーからクリックして設定画面を開いてみると簡単に利用できると思います。

よい研究ライフを。