Я пытаюсь создать несколько точечных диаграмм с высокой плотностью с R. Какой пакет должен быть установлен для этого? Или есть другой способ получить участки.
Какой пакет нужно установить в R для точечных диаграмм с логарифмическим бинированием?
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
Хороший пример, но совсем не ясно из вопроса, хочет ли этого ОП...
- person Ben Bolker; 06.07.2011
@Бен и Ричи: Пожалуйста, смотрите мои комментарии к вопросу!
- person user744121; 08.07.2011
@Ben: пожалуйста, обратитесь к одному документу publik.tuwien.ac.at/files/ pub-et_10937.pdf , я пытаюсь создать несколько диаграмм рассеяния высокой плотности с логарифмическим бинированием, как это сделано в статье на странице 10. Пожалуйста, дайте мне знать, как создать их в R
- person user744121; 10.07.2011
У меня нет времени разбираться с этим в данный момент, но вы (или, возможно, другой комментатор) сможете решить это, используя комбинацию (1)
cut
, примененную с соответствующими логарифмическими разрывами к вашим переменным x
и y
; (2) table
применяется к этим двум производным переменным; (3) image
применяется к этой таблице с соответствующими логарифмическими разбиениями, или melt
(из пакета reshape
) таблица и график с точками, снова окрашенными соответствующим образом...
- person Ben Bolker; 11.07.2011
@Richie Я попробовал ваши предложения для базовой, решетчатой и ggplot2 графики, которые, как я обнаружил, похожи на простое выполнение plot(log(x),log(y)) . ИМХО, ваши предложения просто берут журнал значений x и y и строят график рассеяния. Но я ищу, как создать логарифмические ячейки на диаграмме рассеяния. Я нашел кое-что на шестиугольном графике, используя библиотеку (hexbin), которая является одним из способов определения ячеек, но не похожа на логарифмические ячейки.
- person user744121; 11.07.2011
@ user744121: вы пытались выполнить мои предложения? где ты застрял? Не стесняйтесь редактировать свой вопрос выше, чтобы показать, что вы пробовали...
- person Ben Bolker; 12.07.2011
@ Бен, я не понимаю, как указать логарифмические разрывы в этой команде для вырезания, c1 ‹- cut (x, breaks =), я думаю, что застрял только в первой части.
- person user744121; 12.07.2011
например
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