[問題] ggplot 畫機率分配走勢圖(NT$300+200)
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
註:賞金限首殺者,自動分組的部分跟主要問題分開,詳見內文
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
問題應該算常見,看標題就明白,但做起來卻難如登天 怎麼做怎麼錯
我的資料長這樣(公司資料無法攜出 勞煩解答者自行按下面說明稍微模擬一下)
tableA
GP N N_valid
---------------------
1 300 120
2 225 55
3 145 42
4 101 45
....
52 5 3
53 1 1
55 2 0
58 2 2
63 1 0
79 2 1
97 1 0
tableA 是一個 pre-summarized 的次數分布圖:
GP 是整數,由小排到大,但並不 consecutive
N 代表某 GP 值的事件數
N_valid 代表成功事件數,0 <= N_valid <= N
並且這張表有一個特性
就是 N 愈到後面愈稀疏
如果 N = N_valid = 0 則不會出現該 GP 的 row, 例如 GP=80
我想做的事情也很簡單:
畫出成功機率 (N_valid / N) vs GP 的走勢圖
實際上應該會是 sum(N_valid)/sum(N) "group by 每個bins" 的概念
並且因為GP愈大,N值愈稀疏,所以組距也必須設定為愈後面愈寬
要不然每組的樣本數不夠,機率的上下跳動幅度會太大
目前還想不到什麼好方法來做自動化的計算
所以就先手動設定 breaks = c(5,10,15,20,30,50)
(如果可以自動化,也希望一併提供solution,賞金額外再給$200)
我嘗試弄了一段程式碼如下
hist <- ggplot(tableA, aes(x=GP)) +
geom_bar(aes(y=sum(N_valid)/sum(N)),
breaks=breaks,
stat='identity') +
scale_y_continuous(labels=percent)
hist
反正就先設好資料,再設好圖層跟軸,最後座標軸等修飾屬性套上去
ggplot 的 code 基本也就長這樣
結果雖然有圖,但是不work,跑出一堆黑白相間的條紋,scale 也完全不對。
(資料在公司 無法連網請見諒)
這問題太 subtle 了
stackoverflow 無果
性質最接近的帖子如下
http://stackoverflow.com/questions/15664202/how-to-interpret-the-different-ggplot2-densities
http://stackoverflow.com/questions/15733531/specifying-number-of-breaks-with-scales-in-ggplot2-without-a-transform/15734133#15734133
http://stackoverflow.com/questions/15651084/error-with-ggplot2-mapping-variable-to-y-and-using-stat-bin
但都不是我所需要的(當然也可能是我程度太差看不懂)
google 關鍵字也不知道要怎麼下
因為工作關係沒有辦法在這個問題上浪費太多時間
故在此直接出 $300 徵答(如有辦法不用手動設定breaks再加$200)
請意者作答後,把匯款方式寄站內信給我(我付款後要再麻煩您推文告知已收到)
感謝大大熱心!
[程式範例]:
請見問題敘述後半段(公司資料保密無法連網請見諒)
[環境敘述]:
摘要如下
R 3.2.1 win7 x64 SP1
platform: x86_64-w64-mingw32/x64 (64-bit)
有library(ggplot2)
library(scales)
[關鍵字]:
ggplot
geom_histogram
geom_bar
summary function
density
--
順便再問一下
為什麼我想上網 RTFM 卻沒有一個地方給我 RTFM (例如python就有python docs)
只能在一堆非結構化的散亂網頁當中連來連去
https://cran.r-project.org/index.html
https://cran.r-project.org/manuals.html
http://stat.ethz.ch/R-manual/
https://www.r-project.org/other-docs.html
是不是大家學R真的全靠help()跟example()就可以了呢?
在網路上沒有一個像python docs的集中地 個人覺得是UX上的一個致命缺陷
當然個人學習 靠help()跟example()是OK的沒錯
問題是你要demo,要推廣,要做教學
你所在的環境不一定容許你預先裝好Rstudio
例如,公司電腦,或者手機(出門在外需要討論問題查資料)
而且初學者通常不喜歡打指令,
更不喜歡每打一次指令就要跑去把Rstudio的說明視窗拉大
我也很好奇大家是怎麼面對這個困擾的 @@
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.74.114
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1461666979.A.09E.html
※ 編輯: realtemper (61.230.215.24), 04/26/2016 19:47:42
討論串 (同標題文章)