Chap6 グラフの作成

コンテンツ

6.1 はじめに
6.2 2Dグラフ ( 散布図, 棒グラフ, 積み上げ棒グラフ, ヒストグラム, 箱ひげ図, 円グラフ)
6.3 関数グラフの作成
6.4 高水準作図関数 ( 散布図, ヒストグラム, QQプロット, 箱ひげ図, 時系列グラフ, 多変量データの散布図)
6.5 グラフ・パラメータ

6.1 はじめに

S-PLUSでは2つのグラフシステムを用意している。1つはGUIを用いるオブジェクト指向グラフで、もう1つは コマンドラインを用いる関数グラフ( 関数グラフの作成 )である。前者がプロット・パレートを用いて、簡単にグラフを作成できるというメリットがある。2D、3Dグラフのプロット・パレートを表示させるには、S-PLUSのメインツールバーにある、2Dプロット、3Dプロットボタンをクリックする。

図6.1

S-PLUSでは、多様な2D,3Dグラフが作成できる。これから、幾つか基本の2Dグラフの作成方法を説明していく。

図6.2

6.2 2Dグラフ

散布図

作成手順:

Step1: データシートを開く

Step2: Ctrlを押しながら、変数に列を選ぶ。ここで、注意するのは、S−PLUSが最初選ばれた変数の列がx軸、次に選ばれた変数の列をy軸として認識すること。

図6.3

Step3: 2Dプロットパレットにある、散布図のボタンをクリックする。

図6.4

散布図が表示される

図6.5
[一番上へ]

棒グラフ

作成手順

Step1: データシートを開く

Step2: 散布図と同様に変数の列を選ぶ。ただ、x軸の変数のタイプが“character”であることを確認してください。

図6.6

Step3: 2Dプロットパレットにある、棒グラフのボタンをクリックする。

図6.7

棒グラフが表示される

図6.8

x軸ではスペースが少ないので、ラベルが2行に並べられた。見栄えをよくするには:

Step1: ラベルをダブルクリックし、X Axis labelsダイアログを立ち上げる。

Step2: FontタブでRotation(回転角)を45に変更する。

図6.9

ラベルが見やすくなった。

図6.10
        
[一番上へ]

積上げ棒グラフ

作成手順

Step1: データシートを開く

Step2: Ctrlを押しながら、変数を選ぶ。

図6.11

Step3: 2Dプロットパレットにある、ヒストグラムのボタンをクリックする。

図6.12

積上げ棒グラフが表示される。

図6.13

凡例をを作りたいなら、ツールバーの凡例自動生成ボタンをクリックすればいい。

図6.14

グラフに凡例が追加された。

図6.15
[一番上へ]

ヒストグラム

作成手順

Step1: データシートを開く

Step2: データを選ぶ

図6.16

Step3: 2Dプロットパレットにある、ヒストグラムのボタンをクリックする。

図6.17

ヒストグラムが表示される。

図6.18

より細かい区間で表示したいなら、

Step1: グラフをダブルクリックし、Histogram/Density[1]ダイアログを立ち上げる。

Step2: Data to PlotタブでNumber of Barsを50に変更する。

図6.19

変更後のヒストグラム

図6.20
[一番上へ]

箱ひげ図

ヒストグラム用のデータを用いて、作成手順が以下のようになる。

Step1: データを選ぶ

図6.21

Step2: 2Dプロットパレットにある、箱ひげ図のボタンをクリックする。

図6.22

箱ひげ図が表示される。

図6.23
[一番上へ]

円グラフ

作成手順

Step1: データシートを開く

Step2: 数値のデータを選ぶ

図6.24

Step3: 2Dプロットパレットにある、円グラフのボタンをクリックする。

図6.25

円グラフが表示される。

図6.26

ここで、数値ではなくそれぞれにあたる品種名とパーセントを表示したい場合:

Step1: グラフをダブルクリックし、Pie chart[1]ダイアログを立ち上げて、Date to Plotタブのy Columnsを“製品種類”に指定する。そして、Applyをクリックする。

図6.27

Step2: 同じPie chart[1]ダイアログで、LabelsタブにあるLabel2のTypeを“percent”に指定する。そして、Applyをクリックする。

図6.28

ラベルが製品種類とパーセント表示に変更された。

図6.29
[一番上へ]

6.3 関数グラフの作成

S言語でグラフを作成するには,作図機械とグラフ関数が必要となる.

作図機器の指定

グラフを作成する前に,あらかじめ作成機器の指定が行われる.Sでは,いろいろな作図機器が用意されているが, 通常S-PLUSを起動してからのディフォルト設定が graphsheet( ) で,ユーザが特に意識しなくてもよい.このディフォルト設定が, 新たに作図機器を設定しない限りずっと有効である.現在の作図機器が何かと分からないとき, dev.cur( ) で調べることができ る.また,直接に別の装置にグラフを出力したい場合では,対象とする作図機器関数を用いて作図機器を出力可能状態に設 定すればいい.ただ単に現在の作図機器を止めたい時は, graphics.off( ) を実行する.

グラフをPDFファイルに出力する場合:

> pdf.graph(file="test.pdf", color=T)     #pdfの作図機器を指定,ファイル"test.pdf"
                                にカラーグラフを出力する
> pie(rep(1, 10))                    # 円グラフを描く
> graphics.off( )                    # pdf ディバスを止める
> dev.cur()                          # 現在の作図機器を表示する 
 null device 
           1            
図6.30

グラフ関数

グラフ関数は,次の2つの種類に分かれる:

2種類のグラフ関数の組み合わせによって,多様なグラフを作りだすことができるのはS言語でグラフ作成の特徴とも言 える.グラフ関数はまた,グラフ・パラメータと呼ばれる特別名引数を共有しており,文字の大きさ,線分の形式など,図の細部 を変更できる.

[一番上へ]

6.4 高水準作図関数

散布図

散布図を作成するには,最もよく使われる高水準作図関数plot()を用いる.

> x = rnorm(50)  
> y = rnorm(50)  
> plot(x, y, type="p")                           #引数type="p"で点としてプロットする.
> title("figure 1",xlab="x axis", ylab="y aixs") #タイトル, x軸,y軸ラベルを追加する.
                
図6.31

上の例でタイトル,x軸,y軸ラベルを指定するには低水準作図関数 title( ) を用いた. 点の代わりに,線分で順に結んだプロットをするには,引数typeの値を"l"に設定すればよい.

> u = seq(0, 4*pi, by=0.05)                #0から4πまでの数列を0.05おきに作る. 
> y = sin(u)  
> plot(u, y, type="l")                    #引数type="l"で線で結ぶ.
> title("figure 2",xlab="u", ylab="sin") 
                
図6.32

2組以上のデータセットを1つの散布図に重ねて描くのはmatplot()を用いる.

> 行数=6   
> 列数=2
> x=matrix(3,行数,列数)
> x=col(x)                               #col()で行列xの要素を列番号で埋める.
> y=matrix(1:12,行数,列数)  
> matplot(x,y)         
                
図6.33

ヒストグラム

1次元データの分布を調べるのは,hist()を用いてヒストグラムを描くことができる.

> サイコロの目 = sample(1:6, size=1000, rep=T) #sample()で数列をランダムに並び替え, サイコロの結果を作る.
> hist(サイコロの目, breaks=c(0:6))
                
図6.34

低水準作図関数lines()を用いると,既存のプロットに線分を追加することができる. 正規分布に従う乱数のヒストグラムと正規分布の密度関数を1つのグラフに描くには:

> x = rnorm(200)
> hist(x, xlim=c(-6,6), ylim=c(0,0.4),prob=T)  #引数xlim=,ylim=でx軸とy軸の範囲を設定する.
> u = seq(-4, 4, by=0.05)            
> lines(u, dnorm(u))       #dnorm()で標準正規分布の確率密度関数の値を返す.
                
図6.35

QQプロット

2組のデータが同じ分布に従っているかを視覚的に検証するためのQQプロットをqqplot(x, y )で作成することができる.2組の分布が位置と尺度は別として,類似しているならば図はだいたい直線 となる.

>x = rexp(1000)      #指数分布を発生する
>y = rnorm(1000)     #正規分布を発生する
> qqplot(x, y) 
                
図6.36
        

箱ひげ図

QQプロットに対して,3組以上のデータの分布を比べる際に,boxplot()で箱ひげ図を描くのは便利である.

> x = rnorm(100)
> y = ruinf(100)
> z = rexp(100)
>boxplot(x, y, z)
                
図6.37

時系列グラフ

plot()に引数を1つのベクトルだけ与えれば,ベクトルが時系列データとみなされ,縦軸をベクトルの要素と する時系列プロットが描かれる.ただ,複数の時系列データを1つのグラフに重ね描きたいとき,tsplot()を用いる.

>x=(1:20)
>tsplot(con(x),sin(x)) 
                
図6.38

多変量データの散布図

2次元のグラフで多変量データを表す1つの方法として,pairs() を使うことができる.

>pairs(iris[,,1])
                
図6.39
[一番上へ]

6.5 グラフ・パラメータ

グラフ・パラメータは,グラフの見栄えをさまざまな観点から調整する.その指定の仕方に 2通りある:

>x = runif(10)
>y = runif(10)
>z = runif(10)
>par(csi = 0.20) 
>plot(x, y, csi=0.50)
>points(x, z)#0.20でインチでプロットされる.
                
図6.40

グラフ・パラメータ自体もまた,次のように2通りに分かれる.

関数parを引数なしで実行すると,グラフ・バラメータの現在値を知ることができる. ここで,最もよく使われるパラメータについて説明する.

テキストとシンボル

グラフの軸と軸ラベルは関数axisを用いて作成することができる.

>x = runif(50)
>y = runif(50)
>plot(x, y, axes = F) # 軸を描かない
>axis(side=1) # 1は下側,2は左側,3は上側,4は右側  
>axis(side=2, pos=0)  # 軸yの座標を指定する
                
図6.41

上の例では,まず軸なしでプロットし,それから関数axisで軸を描く. 引数sideは軸を付ける位置を指定する.引数posは軸x,yの座標を指定する.

グラフマージン

1枚のグラフは,グラフの領域,4つのマージンで囲まれる作図領域から構成される. パラメータmaiをインチ単位で指定し,4つのマージンを設定する.

>x = runif(50)
>y = runif(50)
>par(mai = c(1, 2, 3, 4))
>plot(x, y)
                
図6.42

複数のグラフ

複数のグラフを1つのグラフシートに作成するには,パラメータmfrowまたはmfcolを用いる. パラメータmfrowは行ごとに,mfcolは列ごとに作図する.

>par(mfrow = c(2, 3))
>plot(x)
>hist(x)
>boxplot(x)
>boxplot(y)
>hist(y)
>plot(y)
                
図6.43
[一番上へ]