挨拶 レンウッドといいます。Hadley Wickham氏のR for Data Scienceを学習するにあたり、記録を残していこうと思います。 ここ誤解してるよ、とか、こうした方がいいよ、とかアドバイスあったらありがたいです。 R for Data Science: http://r4ds.had.co.nz/ 基本構文 ggplot(data = <DATA>) + <GEOM_FUNCTION>( mapping = aes(<MAPPINGS>), stat = <STAT>, position = <POSITION> ) + <COORDINATE_FUNCTION> + <FACET_FUNCTION> 各要素の(自分なりの)説明 <DATA> グラフの元となるデータ <GEOM_FUNCTION> グラフの種類を決める。以下代表的なもの geom_point: 散布図 g
今回はtidyではないデータをtidyなデータに変形することで、より簡単にggplotでデータを可視化する方法について書きたいと思います。 tidyなデータとは何ぞやという方、参考にあげているページをご覧ください(なげやりですみません。。)。 まず、tidyではないデータとして、以下のデータフレームを用意します。 tibbleはRのデータフレームオブジェクトを拡張させたオブジェクトで多くのメリットを持ちます。 library(tidyverse) #今回使用するtibble,tidyr,dplyr,stringr,ggplotパッケージはtidyverseパッケージに内包されています。 tb1 <- tibble(Place=c("Hiroshima","Osaka","Tokyo"), "2018-08-01 temperature" = c(30,33,28), "2018-10-01
Rのグラフィクスパッケージであるggplotの基本的な使い方を備忘録的にまとめていこうと思います。 library(ggplot2) df<-diamonds #今回はggplotパッケージに含まれるdiamondsデータセットを使います。df(dataframe)に代入します。 head(df) #dfの内容確認 # A tibble: 6 x 10 carat cut color clarity depth table price x y z <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl> 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31 3 0.23 Good E VS1 56
ggplotで作成した複数のグラフを1つの画像にまとめて出力します。 色々と複数の図をまとめるパッケージがあるみたいですが、今回はgridExtraパッケージを使います。興味のある方は参考ページを見てください。 まず、各グラフを作成します。作成の仕方はRのデータ可視化パッケージggplotの基本を参考にして下さい。 #パッケージの読み込み library(ggplot2) library(gridExtra) #各グラフの作成 df <- diamonds #データはdiamondsを使います。 p1 <- ggplot(df,aes(x=carat,y=price))+ geom_point() p2 <- ggplot(df,aes(x=cut,y=price))+ geom_boxplot() p3 <- ggplot(df,aes(x=price))+ geom_histogram
やりたいこと 箱ひげ図は分布形状を知るのに便利だけど、具体的な数値も知りたいところです。 当然summary()でもいいんですが、どうせなら一遍に知りたいし伝えたいので、 箱ひげ図に要約統計量を書きたいです。 とりあえずそれだけならstat_summary()でOK。 やったこと ただこれだけだとnが分からないので、以下を丸々参考に記載。 参考:https://stackoverflow.com/questions/40102613/ggplot2-adding-sample-size-information-to-x-axis-tick-labels StatN <- ggproto("StatN", Stat, required_aes = c("x", "y"), compute_group = function(data, scales) { y <- data$y y <- y[
といった課題がある。 前者についてはggplot_add()の登場によって解決できる見通しっぽい。 https://yutani.rbind.io/post/2017-11-07-ggplot-add/ でも実は既にあるggplot2の実装でできるんじゃね? と思ったので試してみました。 ただ、結局、実用的なのは一部のgeomのみです(boxplotやdensityなどstatで計算を行うものは不可). geom_point, geom_lineに加え、geom_rect, ribbon, areaなどはいけることを確認しました。 highlightする関数を返す高階関数 .geomにはggplot2::GeomPointなどのGeom*オブジェクトを指定します。 library(ggplot2) library(purrr) library(stringr) gghl <- functi
昨日の記事の続編ですが、昨日の記事のことは忘れていいです。 gghighlightについて グラフ作りにおいて、必要な情報だけを色付けてくれるパッケージ(yutannihilation氏作) http://notchained.hatenablog.com/entry/2017/09/29/212444 library(ggplot2) library(gghighlight) gghighlight_point(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species), Species == 'setosa', use_direct_label = FALSE) といった課題がある。 前者についてはggplot_add()の登場によって解決できる見通しっぽい。 https://yutani.rbind.io/post/20
はじめに データの可視化について * 平行座標プロット * 散布図行列 が便利だよ、ということなので使ってみる。 平衡座標プロット キモはID列をつくって、groupで行ごとにプロットさせることらしい。 また、必要に応じて変数を正規化する。 library("tidyverse") ggplot(iris %>% sample_n(15) %>% #数が多いので一部のみ抽出 mutate(ID = 1:n()) %>% #ID割り振り mutate_if(is.numeric,scale) %>% #正規化 gather(key,value,c(1,1:4)), #long styleに変換 aes(key,value,group=ID,colour=Species))+ geom_line() + geom_point(size=2,shape=1) #軸との交点を見やすくするオプション
ggplot2はレイヤの順番変更や、削除がやや手間 ggplot2は、便利な作図ツールですが、データや書式をレイヤに分けている関係上、レイヤを足す順番が大事になります。 例えば下記の図は、散布図と回帰曲線を足す順番を前後させたもの。 点を目立たせたいか、回帰曲線を目立たせたいか、考えてレイヤを足さなければなりません。 library(ggplot2) library(GGally) gp <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) layers <- list( geom_point(), geom_smooth(alpha = 0.6) ) ggmatrix( list( gp + layers, gp + rev(layers) ), nrow = 1, ncol = 2, xAxis
動機 誰かと仲良くなると急にメッセージが増える.そのあと疎遠になるとさっぱりやりとりをしなくなる傾向がある.いっぽう,長いあいだ関わりのある友人の場合,量は少ないが長期間にわたってメッセージをやりとりをする.こういうパターンを可視化したい.ひらたく言うと恋/友情/用事がどれほど熱くなって,どれくらいのスピードで冷めたかが見られるようになる. データの収集 まずはfacebookからデータを引っ張ってこないと始まらない.Facebookにログインし,ページの右上からSettings>Download a copy of your Facebook data.と辿っていくと全データがダウンロードできる.人によっては数百MB,数GBにおよぶと思う.ZIPを解凍するとそこにhtml/messages.htmというファイルがある.ここに全メッセージのデータが入っている・・・はずだったのだが,最近仕様
ある晩、旧知の研究者からggplot2を使って下記のようなグラフを書きたい、と問い合わせがありました。 ggplot2で回帰曲線を描きたい グラフのある点で回帰式が変わるので (次数が上がるとか言ってた)、区間ごとに分けて書きたい geom_smoothではなくて、推定されたパラメータを使ってダイレクトに書きたい predict関数を使うとグラフがギザギザになるので、別の方法で ちょうど私も中断時系列/回帰分断モデルのggplot2での作図に苦労していたので、二つ返事で引き受けました。 少し時間がかかってしまいましたが、宿題を提出致します。 結論 layer関数の第一引数にpredictで推定したデータのsubsetを指定することで、「ある時点」前後のグラフを重ねて出力することができる。 predict関数を用いても、ギザギザしないグラフを書くことはできる。ただし、パラメータの設定次第。
勉強会でやったように、統計量や変数の型などが分かります。data.frameではView()でエクセルのようなシートがみられます。 dplyr filter()
TDA(topological data analysis)で、一次元の輪、2次元の空洞を数える パッケージ library(TDA) library(foreach) library(ggplot2) library(tidyverse) library(readxl) > read_excel("C:/Users/owner/Desktop/sd.xlsx") # A tibble: 55 x 3 Area StdDev mA <dbl> <dbl> <dbl> 1 746 25.2 50.0 2 746 21.9 50.0 3 746 21.8 50.0 4 746 21.1 50.0 5 746 24.1 50.0 6 746 17.6 100 7 746 14.6 100 8 746 15.1 100 9 746 15.0 100 10 746 17.2 100 # ... wi
「データ視覚化のデザイン #1」をmatplotlibで実装するをRでやってみるというヤツです。 ggplotではなくplotで描いたバージョンも公開しました。 1. すっきりバープロット 普通に書くとこうなります。 dat <- data.frame(name = c("フリーザ", "ギニュー", "クリリン"), val = c(530000, 120000, 10000)) library(tidyverse) ggplot(dat, aes(x = name, y = val))+ geom_bar(stat = "identity") ggsave("fig1.png", width =5, height = 2.5) まず、メインとなるグラフ形式の整形。 1. X軸並び替え: aesのxをreorder(name, val)で並び替え 2. 数値表示:geom_textを使っ
概要 Rでデータの可視化を試してみたんだけど、ggplot2のTreemapがうまくいかない人のための記事。使用するデータは2015年度の政府統計です。 (ゼミでコードをシェアしたものの、コードだけでは伝わらないのでは、という懸念を解消するための記事でもある。) 解説 ライブラリとデータのセット #set libraries print(search()) library(gdata) #to read xls data library(treemap) #to use treemap plot library(dplyr) #to use great data modify function, like group_by #load data population <- read.xls("2015_population.xls") #delete useless columns pop
こんなデータがあるとします。 カラムxには1~5のいずれか、yにはデータ、keyには系列ラベル、ですね。 set.seed(71) N <- 100 dat <- data.frame(x = sample(1:5, 2 * N, replace = TRUE), y = c(rnorm(N, 1, 3), rnorm(N, 3, 3)), key = c(rep("A", N), rep("B", N))) Fig.1 平均値の折れ線グラフ+標準偏差 Fig.1 こんなグラフを書いたりします。 往々にして、こんなグラフが出てくるのは横軸が時間軸で、タイムポイント1~5までの系列A, Bそれぞれの値の推移をまとめました、という内容です。横軸の取り方に問題がある場合もありますが、とりあえずそこはセーフとしておきましょう。 dat_g <- dat %>% group_by(key, x) %
"counter","length","category" 50,0,NA 97,1,NA 122,2,NA 214,3,NA 134,4,NA 63,5,NA 204,0,"エンターテイメント" 633,1,"エンターテイメント" 400,2,"エンターテイメント" 315,3,"エンターテイメント" 292,4,"エンターテイメント" 490,5,"エンターテイメント" 14,0,"音楽" 100,1,"音楽" 151,2,"音楽" 186,3,"音楽" 552,4,"音楽" 131,5,"音楽" 130,1,"歌ってみた" 170,2,"歌ってみた" 2989,3,"歌ってみた" 1282,4,"歌ってみた" 347,5,"歌ってみた" 11,0,"演奏してみた" 86,1,"演奏してみた" 35,2,"演奏してみた" 125,3,"演奏してみた" 41,4,"演奏してみた" 34,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く