Сохранение гистограммы из ggplot2 для последующего поиска - PullRequest
2 голосов
/ 30 марта 2012

Можно ли сохранить информацию, сгенерированную из geom_histogram(), таким образом, чтобы ее можно было извлечь на более поздней стадии? Я хочу рассчитать гистограммы большого набора данных и сохранить его, чтобы на следующем этапе я мог добавить еще один слой информации.

Ранее я думал об использовании pdf или jpeg для этого (и недавно задал вопрос по этой теме), но я думаю, что было бы чище, если бы мне удалось фактические данные.

1 Ответ

3 голосов
/ 30 марта 2012

Я просто перемещаю свой комментарий вниз как ответ ...

Все вызовы ggplot2 могут быть сохранены в переменной. Пока переменная остается неизменной, вы можете добавить к ней дополнительные слои. Как и с любой другой переменной или средой - эти переменные графика также можно сохранить в файл для последующего использования.

Например:

dat <- data.frame(x=rnorm(10000),y=rnorm(10000))
plot1 <- ggplot(dat, aes(x))
plot2 <- ggplot(dat, aes(y))

save(file="~/Plots.Rdata",list=ls()[grep("plot",ls())]) # Save vars named plot...

rm(plot1,plot2) # Remove

load("~/Plots.Rdata") # Reload Plots

plot1 + geom_histogram() # Add new layer later
plot2 + geom_histogram() # Add new layer later

UPDATE

В ответ на ваш комментарий ниже относительно уменьшения размера:

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

first.density <- density(dat$x) # Look at str(x.density) you'll see x and y 
second.density <- density(dat$y) # Look at str(y.density) you'll see x and y

dat1 <- data.frame(x=first.density$x,y=first.density$y)
dat2 <- data.frame(x=second.density$x,y=second.density$y) 

plot3 <- ggplot(dat1, aes(x,y))
plot4 <- ggplot(dat2, aes(x,y))

Как видите, размер объекта значительно уменьшен:

object.size(plot1)
object.size(plot2)
object.size(plot3)
object.size(plot4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...