我正在学习使用ggvis,并希望了解如何创建与hist生成的等效直方图。具体来说,如何在ggvis直方图中设置bin的宽度以及x的上下界?我错过了什么?
问题: 如何获取ggvis直方图输出以匹配hist输出?
让我举个例子:
require(psych)
require(RCurl)
require(ggvis)
if ( !exists("impact") ) {
url <- "https://dl.dropboxusercontent.com/u/8272421/stat/stat_one.txt"
myCsv <- getURL(url, ssl.verifypeer = FALSE)
impact <- read.csv(textConnection(myCsv), sep = "\t")
impact$subject <- factor(impact$subject)
}
describe(impact)
hist(impact$verbal_memory_baseline,
main = "Distribution of verbal memory baseline scores",
xlab = "score", ylab = "frequency")
好的,让我们尝试用ggvis重现......输出不匹配......
impact %>%
ggvis( x = ~verbal_memory_baseline, fill := "white") %>%
layer_histograms(width = 5) %>%
add_axis("x", title = "score") %>%
add_axis("y", title = "frequency")
如何让ggvis输出与hist输出相匹配?
> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.2 (El Capitan)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] psych_1.5.6 knitr_1.11 ggvis_0.4.2.9000 setwidth_1.0-4 colorout_1.1-1 vimcom_1.2-3
loaded via a namespace (and not attached):
[1] Rcpp_0.12.0 digest_0.6.8 dplyr_0.4.3.9000 assertthat_0.1 mime_0.3
[6] R6_2.1.1 jsonlite_0.9.16 xtable_1.7-4 DBI_0.3.1 magrittr_1.5
[11] lazyeval_0.1.10.9000 rstudioapi_0.3.1 rmarkdown_0.7 tools_3.2.2 shiny_0.12.2
[16] httpuv_1.3.3 yaml_2.1.13 parallel_3.2.2 rsconnect_0.4.1.4 mnormt_1.5-3
[21] htmltools_0.2.6
答案 0 :(得分:2)
尝试
impact %>%
ggvis( x = ~verbal_memory_baseline, fill := "white") %>%
layer_histograms(width = 5, boundary = 5) %>%
add_axis("y", title = "frequency") %>%
add_axis("x", title = "score", ticks = 5)
给出了:
官方文档对于boundary
和center
的工作方式有点神秘。看一下DataCamp的How to Make a Histogram with ggvis in R
width
参数已将bin宽度设置为5,但是bin的位置 开始,他们在哪里结束?您可以使用center
或boundary
这个论点。center
应该参考其中一个垃圾箱的中心 value,自动确定其他bin位置。该boundary
参数指定其中一个bin的边界值。 同样,指定单个值可修复所有bin的位置。 由于这两个参数以不同的方式指定相同的东西,你 最多应设置一个center
或boundary
。
如果您希望使用center
而不是boundary
获得相同的结果,请尝试:
impact %>%
ggvis( x = ~verbal_memory_baseline, fill := "white") %>%
layer_histograms(width = 5, center = 77.5) %>%
add_axis("y", title = "frequency") %>%
add_axis("x", title = "score", ticks = 5)
在这里指定一个箱子的中心(77.5)并自动确定所有其他箱子
答案 1 :(得分:0)
史蒂文斯的回答是正确的。
有了他的指示,我可以更深入地阅读文档:
<强> layer_histograms():强>
http://www.rdocumentation.org/packages/ggvis/functions/layer_histograms
<强>边界强>
<强> add_axis()强>
http://www.rdocumentation.org/packages/ggvis/functions/add_axis
<强>蜱强>