Lecture6: wordcloud, manipulate

作業ディレクトリの確認

getwd()
## [1] "/cloud/project"

パッケージの読み込み

manipulate package

library(manipulate)

wordcloud package

library(wordcloud)
## Loading required package: RColorBrewer

utils2.Rファイルの読み込み

source("utils2.R")

creating the word frequency data frame

freqData <- getFreq2("GSLC2021.txt")

the size of the data frame

dim(freqData)
## [1] 271   1
head(freqData)

wordcloud

wordcloud(rownames(freqData),freqData$Freq)

wordcloud using custom colors

wordcloud(rownames(freqData),freqData$Freq, colors=rainbow(10))

wordcloud2

Introduction

install.packages('wordcloud2')
library('wordcloud2')
freqData2 <- getFreq2("GSLC2021.txt", dfType=1)
head(freqData2)
wordcloud2(freqData2)

manipulate (インタラクティブなプロット)

manipulate関数の書き方

  • 単一実行スクリプトの場合
manipulate(
  実行スクリプト,
  picker, sliderの情報(複数の場合はカンマで結合)
)
  • 複数実行スクリプトの場合
manipulate(
  {
  複数の実行スクリプト
  },
  picker, sliderの情報(複数の場合はカンマで結合)
)

色の選択

title="PCH Symbols"
xlabel="x"
ylabel="y"
plot(0,0,pch=8,cex=5,col="blue", main=title, xlab=xlabel, ylab=ylabel)

  • picker()関数
manipulate(plot(0,0,pch=8,cex=5,col=myColors), myColors=picker("red", "violet", "pink", "orange", "yellow", "green", "blue", "cyan") )

プロットマーカーの選択

manipulate(
  plot(0,0,pch=myMarkers,cex=5,col=myColors), myColors=picker("red", "violet", "pink", "orange", "yellow", "green", "blue", "cyan",initial="violet"),
  myMarkers=picker(1,2,3,4,5,6,7,8,initial="5")
)

プロットサイズの選択

  • slider()関数
manipulate(
  plot(0,0,pch=8,cex=mySize,col="blue"),
  mySize=slider(1,10,initial=5)
)

棒グラフ

freqLst <- freqData$Freq[1:20]
names(freqLst) <-rownames(freqData)[1:20]
barplot(freqLst, las=3, ylab="Frequency")

色付き棒グラフ

color8 = c("red", "violet", "pink", "orange", "yellow", "green", "blue", "cyan")
barplot(freqLst, las=3,col=color8,ylab="Frequency")

Zipf’sの法則

説明リンク

\[Frequency=\frac{K}{Rank^A} \] K,A: 定数

K=freqData[1,1]
A=0.8

rank <- seq(1:dim(freqData)[1])
zipf <- K/rank^A

グラフ図:Zipf’sの理論式

plot(zipf, log="xy", type="l",col="red" ,
xlim=c(1,nrow(freqData)),ylim=c(1,50),main="Zipf's Law", xlab="Rank", ylab="Frequency")

頻度散布図&Zipf’sの理論式の重ね書き

par(new=T)
plot(rank,freqData[,1], xlim=c(1,nrow(freqData)), ylim=c(1,50),log="xy",pch=8, col="darkgreen", main="Zipf's Law", xlab="Rank", ylab="Frequency")

凡例をつける: legend

配置:“bottomright”, “bottom”, “bottomleft”, “left”, “topleft”, “top”, “topright”, “right”, “center”
ラベル
lty: 線の種類
pch: プロットの種類
legend("topright",c("Frequency","Zipf's law"),lty=c(NA,1),pch=c(8,NA),col=c("darkgreen","red"))

グラフ図

plot(zipf, log="xy", type="l",col="red" ,
xlim=c(1,nrow(freqData)),ylim=c(1,50),main="Zipf's Law", xlab="Rank", ylab="Frequency")
par(new=T)
plot(rank,freqData[,1], xlim=c(1,nrow(freqData)), ylim=c(1,50),log="xy",pch=8, col="darkgreen", main="Zipf's Law", xlab="Rank", ylab="Frequency")
legend("topright",c("Frequency","Zipf's law"),lty=c(NA,1),pch=c(8,NA),col=c("darkgreen","red"))

実習1: manipulate関数で定数Kを変化させる

title="Zipf's Law"
xlabel="Rank"
ylabel="Frequency"

A=0.8
rank <- seq(1:dim(freqData)[1])

manipulate(
  {
    zipf <- constK/rank^A
    plot(zipf, log="xy", type="l",col="red" ,
         xlim=c(1,nrow(freqData)),ylim=c(1,50),main=title, xlab=xlabel, ylab=ylabel)
    par(new=T)
    plot(rank,freqData[,1], xlim=c(1,nrow(freqData)), ylim=c(1,50),log="xy",pch=8, col="darkgreen", main=title, xlab=xlabel, ylab=ylabel)
    legend("topright",c("Frequency","Zipf's law"),lty=c(NA,1),pch=c(8,NA),col=c(col="darkgreen",col="red"))
    text(20, 50, "Frequency=K/Rank^A")
    text(20, 40, paste("K=", constK))
    text(20, 30, paste("A=", A))
  }
  , constK=slider(10,100, initial=freqData[1,1],step=10)
)

実習2-1

manipulate関数を使用し、変数freqDataの粗頻度数とそのZipf’sの理論式の散布図に対して、freqDataの粗頻度数のプロットマーカーを動的に変更させるコードを、実習1のスクリプトに追加しなさい。

  • 作成上の注意
    • プロットマーカーの選択はSliderを使用すること
    • 範囲1-10,初期値=8

実習2-2

変数freqDataの粗頻度数とそのZipf’sの理論式の散布図に対して、定数Aを動的に変更させるコードを、実習1のスクリプトに追加しなさい。

  • 作成上の注意
    • 定数Aは以下のように設定すること。
    • 範囲0.5-1.5, 初期値=0.8, step=0.05