トップ 履歴 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

R.graph

*disclaimer
603416

R

R.graph



hist()


stem()


boxplot()


barplot()


plot()


stripchart()


pie()


 軸の設定

範囲

  • x軸の範囲 xlim=c(始まり, 終わり)
  • y軸の範囲 ylim=c(始まり, 終わり)
plot(ns210, xlim=c(0,500), ylim=c(0,1600))

目盛

  • 目盛の数(いくつ目盛を付けるか)を、範囲とともに指定 xaxp=c(始まり, 終わり, 目盛の数)
  • こちらでも範囲を指定するが、その範囲は目盛を打つ範囲であり、軸として表示される範囲ではない。
  • ゆえに、軸として表示したい範囲を指定した上で、その範囲をまた指定して、その範囲にいくつ目盛を付けるかを指定する。
plot(ns210, xlim=c(0,500), xaxp=c(0,500,5), ylim=c(0,1600), yaxp=c(0,1600,16))

  • 格子を入れる
grid()
    • 縦軸なしで、横軸だけ10本引くには、
grid(NA, 10)

軸の名前とグラフのタイトル

  • xlab="x軸の名前"
  • ylab="y軸の名前"
  • main="グラフのタイトル" #グラフの上に太字で表示される

 色の指定

  • col = rgb(赤,緑,青)
    • それぞれの色の値を、0から1の間で指定する。
col = rgb(0, 1, 0) #緑
    • 透明度を表すalpha値を四つ目に指定することもできる。
col = rgb(0, 1, 0, 0.5)
  • border で同様に、グラフの「枠」の色を指定することができる。
    • 枠を実色にして、枠の内側を半透明にすると、グラフを重ねた時に見やすくなる。
col = rgb(0, 1, 0, 0.4), border = rgb(0,1,0),

  • 基本色
rgb(1, 0, 0), # 赤
rgb(0, 1, 0), # 緑
rgb(0, 0, 1), # 青

rgb(1, 1, 0), # 黄色
rgb(1, 0, 1), # マゼンタ
rgb(0, 1, 1), # シアン

rgb(1, 1, 1), # 白
rgb(0, 0, 0), # 黒

 その他

凡例 legend()

legend("topright", legend=c("MATTR", "MAGI"), col=c("black", "red"), lty=c(1,1))
  • 最初に位置を指定
    • "topright" で右上
  • 凡例の項目名
    • legend=c("ひとつめ", "ふたつめ")
  • 色の指定
    • col=c("一つ目の色", "二つ目の色")
  • 線のタイプ(line type)の指定
    • lty=c(1,1)
  • 線の幅(line width)の指定
    • lwd=2

複数のグラフを配置 layout(行列)

  • 例:4つのグラフを2×2で
layout(matrix(c(1:4),nrow=2))
  • 例:4つのグラフたてに四つ
layout(matrix(c(1:4)))

複数のグラフを配置

  • mfcol=c(行数,列数) # col なので、列順に並べていく
  • mfrow=c(行数,列数) # row なので、行順に並べていく

グラフを横に並べる(一行二列の例)

par(mfcol=c(1,2))
  • 元に戻す
par(mfcol=c(1,1))

  • 並べたグラフ全体にタイトルをつける場合
    • 余白を事前にとっておく(下、左、上、右)
par(oma= c(0,0,4,0)
    • タイトルをつける(outer=T で余白につける)
mtext(text="Big Name", outer=T)

グラフを重ねる

par(new=T)
    • xlimとylimを同じ範囲にしないとメモリがずれる。
    • ラベルの重なりを避けるには、ラベルを無に指定する。
ylab=""

グラフの色を透明にすると重ねた時に見やすい

hist(jpTT$Token, xlim = c(0, 2000), col = "#ff00ff40", border = "#ff00ff")
hist(nsTT$Token, xlim = c(0, 2000), col = "#0000ff40", border = "#0000ff") 

グラフを書き直す

plot.new()

box()で、グラフの周りに枠をつける


散布図中の記号の形を指定する:pch=数字

数字
1
16
19
20
0
15
5
18
2
17
6
+3
x4

  • 文字を直接指定できる
pch="A"

  • 大きさは cex=数字

 グラフを書く前にグラフィックパラメタ―を設定しておくことができる

フォントの指定

  • family="フォント名"

  • グラフィックパラメターの設定は par()
    • 現状の設定を保存して、作業後に元に戻すのが現実的。
oldpar <- par(no.readonly = TRUE)  #これでoldparに設定を保存
par() #ここで必要な設定する
ここで実際のグラフを描く
par(oldpar) # oldparに設定を戻す

余白を設定する mar() (マージン、単位は行数)

  • mar=c(下, 左, 上, 右) で余白を指定(行数が単位)
par(mar=c(13, 3, 3, 3))
  • 下に13行分、デフォルトで3行

  • 「グラフィックスパラメータ」参考サイト

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/53.html

 グラフの保存

三通り

  1. そのままCtrl+Cでコピーして、貼り付ける
  2. メニューの「ファイル」「別名で保存」で、保存する
  3. コマンドで出力する
    1. png()
> png("sample.png")
> boxplot(vx)
> dev.off()
    1. dev.copy()
    2. dev.off()


png()でdvi=300にするには

png("MDD.result_2023-0916.png", width=2400, height=1600, res=300)
plot()
dev.off()

ggplotのグラフは、ggsave()

 相関のグラフ


 gplotsのplotmeans()を使って平均の比較

http://sugiura-ken.org/wiki/wiki.cgi/exp?page=R%2Epackage#p6

 データポイントに図ではなく項目名を表示する

> tukuru20 <- head(tukuruLDMI, 20)
> tukuru20
       item   long  short col     expression       LD       MI
1        物 261327 276332 917       物を作る 6.490339 2.584237
2      料理   5352  12841 245     料理を作る 6.826624 5.107670
3      環境   8739  30685 194     環境を作る 6.165333 3.514169
4        体  21617  23450 170       体を作る 6.097749 3.711593
5      社会   9974  48979 168     社会を作る 5.686861 2.631944
6      子供  41551  59470 164     子供を作る 5.516995 2.317180
7      作品  11211  16098 156     作品を作る 6.110438 4.130311
8    ページ   3158  24642 150   ページを作る 5.896188 3.459489
9      時間  29958  67857 150     時間を作る 5.288677 1.998111
10     関係  22961  57596 147     関係を作る 5.382339 2.205494
11       形  21075  21282 144       形を作る 5.897259 3.612081
12     会社  17990  41167 144     会社を作る 5.573983 2.660227
13     体制   1813   9396 137     体制を作る 6.060056 4.719703
14       巣   1608   2461 136       巣を作る 6.206421 6.641936
15       会   3515  61475 130       会を作る 5.157372 1.934158
16 システム   5151  16458 124 システムを作る 5.772229 3.767197
17 切っ掛け   3572   3620 124 切っ掛けを作る 6.045710 5.951925
18       表  11443  22851 122       表を作る 5.629759 3.270270
19     組織   5386  15627 120     組織を作る 5.741140 3.794640
20     制度   6387  24257 119     制度を作る 5.568933 3.148207


> attach(tukuru20)
> plot(LD, MI, type="n")
> text(x=LD, y=MI, labels=item)
> detach(tukuru20)

 カテゴリーで色分けするオプション

plot(hwg.train$height, hwg.train$weight, col=hwg.train$gender)
  • デフォルトだと、赤と黒
plot(hwg.train$height, hwg.train$weight, col=c("red", "blue")[hwg.train$gender])
  • 色の指定 col=c("色", "色")[カテゴリー]
    • データポイントを小さくするには cex = 0.5 のように指定
    • 複数重ねるには、par(new=T)を重ねる前に実行
plot(hwg.train$height, hwg.train$weight, col=c("red", "blue")[hwg.train$gender], cex=0.5)
par(new=T)
plot(hwg.test$height, hwg.test$weight, col=c("orange", "green")[hwg.test$gender], cex=0.5)

 サンプル

MHDの分布を、文長ごとに、2年生と3年生と母語話者とで比較してみる。

par(mfrow=c(4,3))
for (i in 5:16){
	tmp2 <- subset(cn23, SL==i & year==2, select=(MHD))
	tmp3 <- subset(cn23, SL==i & year==3, select=(MHD))
	tmpjp <- subset(jp, SL==i, select=(MHD))
	boxplot(tmp2$MHD, tmp3$MHD, tmpjp$MHD, ylim=c(1,5), main=i, names=c("C2","C3", "JP"))
	grid()
	}
mtext(side = 3, outer = T, text = "MHD", line = -1.5)
par(mfcol=c(1,1))

 References


 ggplot2


 ggpubr