首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ggplot创建多(6)个图并将其保存到pdf文件?

如何使用ggplot创建多(6)个图并将其保存到pdf文件?
EN

Stack Overflow用户
提问于 2018-03-22 00:42:06
回答 2查看 144关注 0票数 1

我有一个矩阵(pred_matrix,dim = 1e6,250),行是一个陆地卫星场景的250个NDVI值的“像素堆栈”,我从它做了一个有6个中心(类)的“模糊C均值”分类,存储在列表results中。现在,我想要绘制1e6行的每个类的随机子集。到目前为止,这是我的快速和肮脏的代码:

代码语言:javascript
复制
random_index <- floor(runif(10000, 1, 1e6+1))
random_cluster <- results[[6]]$cluster[random_index]
random_pred_matrix <- pred_matrix[random_index, ]
dates_subse_after_pred <- rdn_num[rm_na_pred_df]

random_res <- cbind(random_pred_matrix, random_cluster)
random_res <- t(random_res)
random_res <- cbind(c(dates_subse_after_pred, 1), random_res)

df_1 <- data.frame(random_res[1:250,c(TRUE, random_cluster==1)])
df_2 <- data.frame(random_res[1:250,c(TRUE, random_cluster==2)])
df_3 <- data.frame(random_res[1:250,c(TRUE, random_cluster==3)])
df_4 <- data.frame(random_res[1:250,c(TRUE, random_cluster==4)])
df_5 <- data.frame(random_res[1:250,c(TRUE, random_cluster==5)])
df_6 <- data.frame(random_res[1:250,c(TRUE, random_cluster==6)])


df_1.long <- melt(df_1, id.vars = 1)
df_1.long$X1 <- as.Date(df_1.long$X1)
df_2.long <- melt(df_2, id.vars = 1)
df_2.long$X1 <- as.Date(df_2.long$X1)
df_3.long <- melt(df_3, id.vars = 1)
df_3.long$X1 <- as.Date(df_3.long$X1)
df_4.long <- melt(df_4, id.vars = 1)
df_4.long$X1 <- as.Date(df_4.long$X1)
df_5.long <- melt(df_5, id.vars = 1)
df_5.long$X1 <- as.Date(df_5.long$X1)
df_6.long <- melt(df_6, id.vars = 1)
df_6.long$X1 <- as.Date(df_6.long$X1)


ggplot(df_1.long) +
  geom_line( aes(x = X1, y= value, group = variable), color = "lightblue")

ggplot(df_2.long) +
  geom_line( aes(x = X1, y= value, group = variable), color = "blue")

ggplot(df_3.long) +
  geom_line( aes(x = X1, y= value, group = variable), color = "lightgreen")

ggplot(df_4.long) +
  geom_line( aes(x = X1, y= value, group = variable), color = "green")

ggplot(df_5.long) +
  geom_line( aes(x = X1, y= value, group = variable), color = "pink")

ggplot(df_6.long) +
  geom_line( aes(x = X1, y= value, group = variable), color = "red")

在这之后,我在rstudio中点击了6次导出按钮,并将其全部插入到word文档中……

有没有办法在循环中做到这一点?或者甚至制作包含这6个图的最终pdf?

EN

回答 2

Stack Overflow用户

发布于 2018-03-22 20:44:32

单独的文件

我认为你想要的是在你的代码中有以下六次。

代码语言:javascript
复制
ggsave("filename.png", # or pdf if you like  
 plot = last_plot(), # or give ggplot object name as in myPlot,
 width = 5, height = 5, 
 units = "in", # other options c("in", "cm", "mm"), 
 dpi = 300)

例如,库(Ggplot2)

代码语言:javascript
复制
p1 <- ggplot(df_1.long) +
 geom_line( aes(x = X1, y= value, group = variable), 
  color = "lightblue")

 ggsave("df1.png", plot  = p1,  dpi = 300)

一体式

如果你想在一个pdf中所有的六个文件,那么首先这样做

代码语言:javascript
复制
pdf("file_name.pdf")
# do your ggplots here
p1
p2
p6 
dev.off()
票数 0
EN

Stack Overflow用户

发布于 2018-03-22 00:46:57

如果你使用的是Rstudio,我建议你把代码写在一个Rmarkdown文件中,然后直接导出到pdf。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49412035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档