R语言作图和数据分析可视化:请求协助改进代码以达到我所需要的效果

刚学R没几个星期,现在要做一个相关分析,并以网络图的形式展示结果。
我参考了诸多前人目前写出的代码和达到的效果是这样的。

library(igraph)
library(psych)
library(RcolorBrewer)
Input_file_path<-file.choose()
#打开一个文件选择窗口,选择一个文件返回其路径,请选择你需要输入的.csv文件。
Test_data<-t(read.csv(Input_file_path,header=T, row.names=1))
View(Test_data)#输入需要分析的文件,这里以.csv文件为例
# 计算OTU间两两相关系数矩阵
occor<-corr.test(Test_data,use="pairwise",method="spearman",adjust="fdr",alpha=.05)
occor.r<-occor$r # 取相关性矩阵R值
occor.p<-occor$p # 取相关性矩阵p值
occor.r[occor.p>0.05|abs(occor.r)<0.4] = 0
#将相关性矩阵中显著性p>0.05和相关系数r的绝对值小于0.4的值全都改写为0
# 构建igraph对象
igraph<-graph_from_adjacency_matrix(occor.r,mode="undirected",weighted=TRUE,diag=FALSE)
#去除孤立点
bad.vs<-V(igraph)[degree(igraph) == 0]
igraph<-delete.vertices(igraph, bad.vs)
# 将igraph weight属性赋值到igraph.weight
igraph.weight<-E(igraph)$weight
# 做图前去掉igraph的weight权重,因为做图时某些layout会受到其影响
E(igraph)$weight = NA
#按相关正负相关分别设置边颜色
sum(igraph.weight>0)#正相关
sum(igraph.weight<0)#负相关
E.color = igraph.weight
E.color = ifelse(E.color>0, "red",ifelse(E.color<0, "blue","grey"))
# 改变edge颜色后出图
set.seed(123)
plot(igraph,main=NULL,vertex.frame.color="black",vertex.label=row.names(occor.r),vertex.color=brewer.pal( 12, "Set3")[ 1:vcount(igraph)],edge.width=1,vertex.size=10,edge.lty=1,edge.curved=TRUE,margin=c(0,0,0,0))

此时在RStudio作图框中得到作图结果为图1

img


主要想改进的方向有两个方面,其一就是想做到类似图2这样的结果,也就是把原来的端点标签去掉,增加一个在空白一侧(比如右下角)的相更加整齐的图例。

img


另外就是想实现类似ggsave一样自动保存RStudio中做图框Plots里的结果为pdf文件的效果,因为我写好的脚本是要留给师弟师妹用的,不想隔三岔五就回答他们“图片怎么只有一张啊?”“图片保存在哪里了啊?”“怎么导出图片啊?”之类的问题。
诚心请求协助!