2015-11-01 140 views
1

我正在学习使用ggvis,并且想要了解如何创建由hist生成的等效直方图。具体来说,如何设置ggvis直方图中x的bin宽度和上下限?我错过了什么?R编程ggvis直方图verses hist - 如何调整桶的大小以及定义X轴间距(ticks)

问题:如何获得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") 

Example Output of Hist

好吧,让我们试着和ggvis ...输出不匹配重现......

impact %>% 
ggvis(x = ~verbal_memory_baseline, fill := "white") %>% 
layer_histograms(width = 5) %>% 
add_axis("x", title = "score") %>% 
add_axis("y", title = "frequency") 

ggvis histogram output

如何获得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 

回答

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) 

其中给出:

enter image description here


的官方文档有点crypti c关于boundarycenter如何工作。看看DataCamp的How to Make a Histogram with ggvis in R

width参数已经设置分箱宽度为5,但在哪里箱 开始,他们在哪里结束?您可以使用centerboundary 这个参数。 center应该指的是其中一个箱子的中心值 的值,它自动确定其他箱子的位置。参数 boundary参数指定其中一个分档的边界值。 这里再次指定一个值来修复所有垃圾箱的位置。 由于这两个参数以不同的方式指定了相同的内容,因此您应该设置centerboundary中的至多一个。


如果你想使用的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)的中心,它会自动确定所有其他

+0

Steven, 谢谢您如此及时回答我的问题。我正在阅读边界并勾选ggvis信息。 – Technophobe01

+0

@PeteJarvis很高兴帮助! :) –

+0

也可以在'layer_histogram'中尝试'center'。我想你想把它设置为.5。 – Elin

0

史蒂文斯的回答是正确的。

有他的三分球让我阅读文档更深刻:

layer_histograms():

http://www.rdocumentation.org/packages/ggvis/functions/layer_histograms

边界

  • 两个区间之间的边界。与中心一样,当边界超出数据范围时,事情将发生变化。例如,要集中整数 ,请使用width = 1和boundary = 0.5,即使1不在数据范围内。中心和边界中的至多一个可能是指定的 。

add_axis()

http://www.rdocumentation.org/packages/ggvis/functions/add_axis

  • 蜱的期望数量。由此产生的数字可能不同,因此 数值“很好”(2,5,10的倍数)并位于基本比例范围内。
相关问题