Какой пакет нужно установить в R для точечных диаграмм с логарифмическим бинированием?

Я пытаюсь создать несколько точечных диаграмм с высокой плотностью с R. Какой пакет должен быть установлен для этого? Или есть другой способ получить участки.


person user744121    schedule 06.07.2011    source источник
comment
ссылки на примеры? пакет hexbin приходит на ум   -  person Ben Bolker    schedule 06.07.2011
comment
@user, точечные диаграммы подразумевают график xy, а логарифмическое бинирование подразумевает некоторый тип гистограммы. Можете ли вы уточнить, какой тип сюжета вы ищете?   -  person bill_080    schedule 06.07.2011
comment
@ bill_080 Я ищу диаграмму рассеяния с логарифмическим бинированием. Логарифмическое бинирование заключается в создании бинов таким образом, чтобы длина бина была кратна длине предыдущего. И да, я нашел пакет hexbin, но я думаю, что это не то, что я искал. Вот ссылка на документ, в котором есть диаграммы рассеяния высокой плотности, сделанные с логарифмическим бинированием на странице 10. citeseerx.ist.psu.edu/viewdoc/… Я надеюсь, что это поможет прояснить   -  person user744121    schedule 11.07.2011


Ответы (3)


Если вам действительно нужна диаграмма рассеяния в логарифмическом масштабе, то вот как ее создать в каждой из трех систем построения графиков.

Сначала немного данных:

dfr <- data.frame(x = rlnorm(1e5), y = rlnorm(1e5))

В базовой графике:

with(dfr, plot(x, y, log = "xy"))

В решетчатой ​​графике:

library(lattice)
p1 <- xyplot(y ~ x, dfr, scales = list(log = TRUE))
p1

В графике ggplot2 (необходимо установить этот пакет + зависимости):

library(ggplot2)
p2 <- ggplot(dfr, aes(x, y)) + 
  geom_point() + 
  scale_x_log10() + 
  scale_y_log10()
p2
person Richie Cotton    schedule 06.07.2011
comment
Хороший пример, но совсем не ясно из вопроса, хочет ли этого ОП... - person Ben Bolker; 06.07.2011
comment
@Бен и Ричи: Пожалуйста, смотрите мои комментарии к вопросу! - person user744121; 08.07.2011
comment
@Ben: пожалуйста, обратитесь к одному документу publik.tuwien.ac.at/files/ pub-et_10937.pdf , я пытаюсь создать несколько диаграмм рассеяния высокой плотности с логарифмическим бинированием, как это сделано в статье на странице 10. Пожалуйста, дайте мне знать, как создать их в R - person user744121; 10.07.2011
comment
У меня нет времени разбираться с этим в данный момент, но вы (или, возможно, другой комментатор) сможете решить это, используя комбинацию (1) cut, примененную с соответствующими логарифмическими разрывами к вашим переменным x и y; (2) table применяется к этим двум производным переменным; (3) image применяется к этой таблице с соответствующими логарифмическими разбиениями, или melt (из пакета reshape) таблица и график с точками, снова окрашенными соответствующим образом... - person Ben Bolker; 11.07.2011
comment
@Richie Я попробовал ваши предложения для базовой, решетчатой ​​и ggplot2 графики, которые, как я обнаружил, похожи на простое выполнение plot(log(x),log(y)) . ИМХО, ваши предложения просто берут журнал значений x и y и строят график рассеяния. Но я ищу, как создать логарифмические ячейки на диаграмме рассеяния. Я нашел кое-что на шестиугольном графике, используя библиотеку (hexbin), которая является одним из способов определения ячеек, но не похожа на логарифмические ячейки. - person user744121; 11.07.2011
comment
@ user744121: вы пытались выполнить мои предложения? где ты застрял? Не стесняйтесь редактировать свой вопрос выше, чтобы показать, что вы пробовали... - person Ben Bolker; 12.07.2011
comment
@ Бен, я не понимаю, как указать логарифмические разрывы в этой команде для вырезания, c1 ‹- cut (x, breaks =), я думаю, что застрял только в первой части. - person user744121; 12.07.2011
comment
например c1 <- cut(x,breaks=10^seq(-5,1,by=0.5)) для 12 логарифмически разнесенных интервалов, охватывающих диапазон от 1e-5 до 10 - person Ben Bolker; 12.07.2011

Недавно я пытался построить их; и просто использовал стандартную функцию hist() с пользовательским набором разрывов:

x <- your data
nbreaks <- 50 # how many points do you want in your scatter plot
breaks <- exp(seq(log(min(x)), log(max(x)), len=nbreaks))
hh <- hist(x, breaks, plot=FALSE)
plot(hh$mids, hh$density, log="xy")

т.е. создайте экспоненциально распределенный набор разрывов и сгенерируйте гистограмму, но вручную нанесите плотности, чтобы контролировать, какие оси регистрируются.

person Sam Mason    schedule 26.04.2012

ggplot2? - см. примеры для geom_point (с использованием альфа-канала) или geom_hex

person EDi    schedule 06.07.2011