R 在函数内调用ggplot函数时,无法将绘图另存为pdf

R 在函数内调用ggplot函数时,无法将绘图另存为pdf,r,pdf,ggplot2,printing,boxplot,R,Pdf,Ggplot2,Printing,Boxplot,我将从4列矩阵pl1中绘制一个方框图,使用ggplot,每个方框上都有点。打印说明如下所示: p1 <- ggplot(pl1, aes(x=factor(Edge_n), y=get(make.names(y_label)), ymax=max(get(make.names(y_label)))*1.05))+ geom_boxplot(aes(fill=method), outlier.shape= NA)+ theme(text = element_text(size=2

我将从4列矩阵
pl1
中绘制一个方框图,使用ggplot,每个方框上都有点。打印说明如下所示:

p1 <- ggplot(pl1, aes(x=factor(Edge_n), y=get(make.names(y_label)), ymax=max(get(make.names(y_label)))*1.05))+ 
  geom_boxplot(aes(fill=method), outlier.shape= NA)+ 
  theme(text = element_text(size=20), aspect.ratio=1)+
  xlab("Number of edges")+
  ylab(y_label)+
  scale_fill_manual(values=color_box)+
 geom_point(aes(x=factor(Edge_n), y=get(make.names(true_des)), ymax=max(get(make.names(true_des)))*1.05, color=method), 
              position = position_dodge(width=0.75))+
  scale_color_manual(values=color_pnt)
pl1 <- data.frame(Edge_n = sample(5, 20, TRUE), foo = rnorm(20), bar = rnorm(20))

y_label <- 'foo'

ax <- do.call(aes, list(
    x=quote(factor(Edge_n)), 
    y=as.name(y_label), 
    ymax = substitute(max(y)*1.05, list(y=as.name(y_label)))))

p1 <- ggplot(pl1) + geom_boxplot(ax)
print(p1)

有人能帮忙吗?

你的例子不太清楚,因为你打了一个电话,但没有显示变量的值,所以很难弄清楚你想做什么(例如,
method
是数据框
pl1
中的一列的名称,还是一个变量(如果它是一个变量,它的类型是什么?字符串?名称?)

尽管如此,这里有一个例子可以帮助你实现自己的目标:

试着这样做:

p1 <- ggplot(pl1, aes(x=factor(Edge_n), y=get(make.names(y_label)), ymax=max(get(make.names(y_label)))*1.05))+ 
  geom_boxplot(aes(fill=method), outlier.shape= NA)+ 
  theme(text = element_text(size=20), aspect.ratio=1)+
  xlab("Number of edges")+
  ylab(y_label)+
  scale_fill_manual(values=color_box)+
 geom_point(aes(x=factor(Edge_n), y=get(make.names(true_des)), ymax=max(get(make.names(true_des)))*1.05, color=method), 
              position = position_dodge(width=0.75))+
  scale_color_manual(values=color_pnt)
pl1 <- data.frame(Edge_n = sample(5, 20, TRUE), foo = rnorm(20), bar = rnorm(20))

y_label <- 'foo'

ax <- do.call(aes, list(
    x=quote(factor(Edge_n)), 
    y=as.name(y_label), 
    ymax = substitute(max(y)*1.05, list(y=as.name(y_label)))))

p1 <- ggplot(pl1) + geom_boxplot(ax)
print(p1)
pl1