スポンサーリンク

ggplot2(Rでグラフ作成)に触れてみる

Rで主にカラーグラフを作成するときには、ggplot2がよいらしいと。。。

白黒画像はggplot2を使わずに、plot()関数などを勉強して頑張れば、よいのかもしれない。

ggplot2に慣れてきたら、白黒画像もggplot2で描いてみたい気も、、、

ggplot2を用いた、心理学の日本語の雑誌用のFigure用のtemplateっぽいものは、以下のサイトにあるらしい。

論文用の棒グラフと折れ線グラフをggplot2で描く
Written on January 29, 2017
https://mrunadon.github.io/ThesisPlot/

(環境)
Windows 8.1 Pro
R Studio 1.1.383

(0)ggplot2について調べてみる

以下のサイトのリンクを読んで、写経してみる。

https://kazutan.github.io/kazutanR/ggplot2_links.html
image

(1)「ggplot2によるグラフ化」を写経してみる。

https://www.slideshare.net/nocchi_airport/ggplot2-kazutan-rver2

サンプルデータ : diamonds
(ggplot2パッケージ内に入っている。約5万行x10列)

Contents

ggplot2

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.3.3
diamonds2 <- diamonds[sample(nrow(diamonds),500),]

head(diamonds2)

 

plot(diamonds2$carat, diamonds2$price)

plot(diamonds2$carat, diamonds2$price,
     pch=21, bg=c("yellow", "red", "green", "blue", "pink")[diamonds2$cut])

ggplot(diamonds2, aes(y=price, x=carat))+
  geom_point()

ggplot(diamonds2, aes(y=price, x=carat, color=cut))+
  geom_point()

ggplot(diamonds2, aes(y=price, x=carat, color=clarity))+
  geom_point()

ggplot(diamonds2,
       aes(y=price, x=carat,
          color=color,
          size=clarity,
          shape=cut))+
  geom_point()
## Warning: Using size for a discrete variable is not advised.

描画の仕組み

レイヤーを重ねて図を調整

基本レイヤー(データ指定)
ggplot(iris, aes(y=Petal.Length, x=Sepal.Length, color=Species))+

プロットの仕方の指定
geom_point()+

背景の指定
theme_bw()+

軸目盛の指定
ylim(0,10)+

軸の書式の指定
theme(axis.text.x=element_text(size=15), axis.text.y=element_text(size=15))

library(ggplot2)
ggplot(iris, aes(y=Petal.Length, x=Sepal.Length, color=Species))+
  geom_point()+
  theme_bw()+
  ylim(0,10)+
  theme(axis.text.x=element_text(size=15),
        axis.text.y=element_text(size=15))

## 方法その2(FACETを用いる)

if(0){
ggplot(diamonds2, aes(y=price, x=carat, color=color))+
  geom_point()+
  facet_wrap(cut~clarity)
}

視覚的に要約

質(5段階)別に価格の平均みたい

ggplot(diamonds, aes(y=price, x=cut))+
  stat_summary(fun.y=mean, geom="bar")

散布図

ggplot(diamonds, aes(y=price, x=clarity, grounp=cut, color=cut))+
  stat_summary(fun.y=mean, geom="point")

## 折れ線グラフ

ggplot(diamonds, aes(y=price, x=clarity, group=cut, color=cut))+
  stat_summary(fun.y=mean, geom="line")

## レイヤーの重ね描き

ggplot(diamonds, aes(y=price, x=clarity, grounp=cut, color=cut))+
  stat_summary(fun.y=mean, geom="point")+
  stat_summary(fun.y=mean, geom="line")
## geom_path: Each group consists of only one observation. Do you need to
## adjust the group aesthetic?

スライドをコピペしたつもりなのだが、うまくいかず。

ググってみたが、わからず、

 

一度、平均と標準偏差を計算してから、ggplot2で計算した方が早いか、、、

https://stats.biopapyrus.jp/r/ggplot/geom-line.html
image

 

 

 

(参考)

ggplot2を使って、軸を制御する-3
Rグラフィックスクックブック
http://mukkujohn.hatenablog.com/entry/2016/10/11/220722

(引用ここから)

——————-

目盛りを変更するためには、scale_y_continuous()のbreaks引数を指定

#目盛りを、50,56,60,66,72に設定します。
ベースのグラフ + 
  scale_y_continuous(breaks=c(50,56,60,66,72))

この50,56,60,66,72の目盛りのテキスト(ラベル)を変更するためには、
scale_y_continuous()labels引数を指定

ベースのグラフ + 
  scale_y_continuous(breaks=c(50,56,60,66,72),
                     labels=c("Tiny","Really\nshort","Short","Medium","Tallish"))

——————-

スポンサーリンク

R

Posted by twosquirrel