Вы можете просто записать график в файл дважды, с разными размерами.
#wrap your plotting code into a function
my_plot <- function()
{
#whatever
}
plot_file_name <- "hello.png"
png(file = plot_file_name, width = 1000, height = 800)
my_plot()
dev.off()
png(file = paste("thumb", plot_file_name, sep = "_"), width = 40, height = 32)
my_plot()
dev.off()
Этот метод лучше работает с lattice
или ggplot2
, где my_plot
может вернуть объект графика, поэтомуВам не нужно вызывать функцию дважды, т. е. вы вызываете
a_plot <- myplot()
png(...)
print(a_plot)
dev.off()
РЕДАКТИРОВАТЬ: Есть несколько различных способов «масштабирования».Вот пример рабочего процесса ggplot2.
Нарисуйте и сохраните свой график
myplot <- function()
{
#e.g.,
ggplot(cars, aes(speed, dist)) + geom_point()
}
the_plot <- myplot()
ggsave("full plot.png", the_plot)
Возможно, вы хотите обновить размеры geom, чтобы они стали меньше
scale_factor <- 0.1
update_geom_defaults("point", aes(size = 2 * scale_factor))
Вы можете использовать1018 * из пакета ggExtra
, чтобы отображать только содержимое панели (т. Е. Игнорировать оси, заголовки и условные обозначения).
ggsave("thumbnail panel only.png", the_plot + opts_full(), scale = scale_factor)
Альтернативой является попытка уменьшить размер осей,и т. д. К сожалению, это немного болезненно.
theme_mini <- theme_grey(12 * scale_factor)
theme_mini$axis.ticks.length <- scale_factor * theme_mini$axis.ticks.length
theme_mini$axis.ticks.margin <- scale_factor * theme_mini$axis.ticks.margin
theme_mini$panel.margin <- scale_factor * theme_mini$panel.margin
theme_mini$plot.margin <- scale_factor * theme_mini$plot.margin
#and probably some more elements to resize
ggsave("thumbnail updated theme.png", the_plot + theme_mini, scale = scale_factor)