*disclaimer
793843
R.graph
- R.graph
- 軸の設定
- 色の指定
- その他
- 凡例 legend()
- 複数のグラフを配置 layout(行列)
- 複数のグラフを配置
- グラフを横に並べる(一行二列の例)
- グラフを重ねる
- グラフの色を透明にすると重ねた時に見やすい
- グラフを書き直す
- box()で、グラフの周りに枠をつける
- 散布図中の記号の形を指定する:pch=数字
- グラフを書く前にグラフィックパラメタ―を設定しておくことができる
- グラフの保存
- 相関のグラフ
- gplotsのplotmeans()を使って平均の比較
- データポイントに図ではなく項目名を表示する
- カテゴリーで色分けするオプション
- サンプル
- References
- ggplot2
- ggpubr
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 |
x | 4 |
- 文字を直接指定できる
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
グラフの保存
三通り
- そのままCtrl+Cでコピーして、貼り付ける
- メニューの「ファイル」「別名で保存」で、保存する
- コマンドで出力する
- png()
> png("sample.png") > boxplot(vx) > dev.off()
- dev.copy()
- 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))
https://sugiura-ken.org/wiki/