R编程ggvis histogram verses hist - 如何调整桶的大小,并定义X轴间距(刻度)

时间:2015-11-01 18:20:34

标签: r histogram ggvis

我正在学习使用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")

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 个答案:

答案 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)

给出了:

enter image description here

官方文档对于boundarycenter的工作方式有点神秘。看一下DataCamp的How to Make a Histogram with ggvis in R

  

width参数已将bin宽度设置为5,但是bin的位置   开始,他们在哪里结束?您可以使用centerboundary   这个论点。 center应该参考其中一个垃圾箱的中心   value,自动确定其他bin位置。该   boundary参数指定其中一个bin的边界值。   同样,指定单个值可修复所有bin的位置。   由于这两个参数以不同的方式指定相同的东西,你   最多应设置一个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)并自动确定所有其他箱子

答案 1 :(得分: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

<强>蜱

  • 所需数量的刻度。结果数可能不同 这些价值观是好的&#34; (2,5,10的倍数)并且位于 潜在规模的范围。