作者realtemper (Be pythonic!)
看板R_Language
标题[问题] ggplot 画机率分配走势图(NT$300+200)
时间Tue Apr 26 18:36:06 2016
[问题类型]:
程式谘询(我想用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://webptt.com/cn.aspx?n=bbs/R_Language/M.1461666979.A.09E.html
※ 编辑: realtemper (61.230.215.24), 04/26/2016 19:47:42