2016-05-10 2 views
0

Я использую ggplot2, чтобы нарисовать гистограмму образца размером 1000, взятого из нормального распределения. Мне нужно поместить букву «А» в центр гистограммы и сделать это с помощью функции annotate.Наиболее часто встречающийся бин в гистограмме ggplot2 в R

Поскольку этот вектор является случайным, «центр» чертежа будет меняться немного каждый раз, когда я запускаю код, поэтому мне нужно найти способ, которым функция знает, как разместить «А» в соответствии с этим конкретный образец. Для оси x я взял медиану образца для оси Y, я думал о том, чтобы принимать частоту наиболее частого бина и делить на 2.

Кто-нибудь знает, есть ли функция, которая дает вам частота каждого бина?

Вот воспроизводимый пример:

library(ggplot2) 
set.seed(123) 
x <- rnorm(1000) 
qplot(x, geom="histogram") 
+2

Пожалуйста, прочитайте (1) [как я задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), (2) [Как создать MCVE] (http://stackoverflow.com/help/mcve), а также (3) [как обеспечить минимальный r пример воспроизводимости в R] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610). Затем отредактируйте и улучшите свой вопрос соответственно. I.e., укажите, например, фиктивные входные данные, какие строки кода вы пробовали и т. Д. – lukeA

ответ

3

Вот способ, чтобы получить координаты выходного участка (на воспроизводимой примере):

library(ggplot2) 
x <- runif(10) 
h <- qplot(x, geom="histogram") 
ggplot_build(h)$data 

Это даст вам все виды информацию о гистограмме.

Таким образом, чтобы получить высоту наиболее частом класса и разделить на две части, вам просто нужно сделать

height <- max(ggplot_build(h)$data[[1]]$count)/2 

Используя такую ​​же информацию, вы также можете поместить текст всегда прямо середина участка:

ranges <- ggplot_build(h)$panel$ranges 
xtext <- mean(ranges[[1]]$x.range) 
ytext <- mean(ranges[[1]]$y.range) 
h + annotate("text", xtext, ytext, 
    label="A", size=30, color="blue", alpha=0.5) 

 Смежные вопросы

  • Нет связанных вопросов^_^