R !!!R.graph {{outline}} ---- !hist() !stem() !boxplot() !barplot() !plot() !stripchart() !pie() !!軸の設定 !範囲 *x軸の範囲 <> *y軸の範囲 <> plot(ns210, xlim=c(0,500), ylim=c(0,1600)) !目盛 *目盛の数(いくつ目盛を付けるか)を、範囲とともに指定 <> *こちらでも範囲を指定するが、その範囲は目盛を打つ範囲であり、軸として表示される範囲ではない。 *ゆえに、軸として表示したい範囲を指定した上で、その範囲をまた指定して、その範囲にいくつ目盛を付けるかを指定する。 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 !複数のグラフを配置 <> *例: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="フォント名" *グラフィックパラメターの設定は <> **現状の設定を保存して、作業後に元に戻すのが現実的。 {{pre oldpar <- par(no.readonly = TRUE) #これでoldparに設定を保存 par() #ここで必要な設定する ここで実際のグラフを描く par(oldpar) # oldparに設定を戻す }} !余白を設定する <> (マージン、単位は行数) *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() {{pre > 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 !!データポイントに図ではなく項目名を表示する {{pre > 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)を重ねる前に実行 {{pre 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) }} {{ref_image hwg.png}} !!サンプル !MHDの分布を、文長ごとに、2年生と3年生と母語話者とで比較してみる。 {{pre 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)) }} {{ref_image c2 c3 jp MHD SL5-16 ylim.png}} !!References *https://www.r-graph-gallery.com/index.html *https://www.jaysong.net/RBook/visualization4.html ---- !!ggplot2 !!ggpubr