如何使用固定的 x 轴在 R 中的同一个图中绘制更多分布

How to plot more distributions in the same graph in R with a fix x axes

我正在使用软件 R 来创建一些分布图。我必须看看哪个分布与其他分布相比有肥尾,然后这些分布应该绘制在同一张图上。问题出在 x 轴上,因为如果我输入 plot command axes = TRUE 和所有其他 axes = FALSE,该图将不真实......只是分布 axes = TRUE 将是正确的,另一个将绘制在错误的轴上。所以你无法弄清楚谁的尾巴最肥。我该如何解决?在实践中应确保所有分布仅绘制在一个 x 轴上。

这是我的代码:

pdf("DegreeI_DDF_T.pdf")
par(mar=c(4.5,5,1,1))
plot(rankI1700~degreeI_ord1700,log="xy",main="",ylab="",xlab="",type="s",col=1,axes=TRUE,lwd=1.6)
par(new=TRUE)
plot(rankI1400~degreeI_ord1400,log="xy",main="",ylab="",xlab="",type="s",col=2,axes=FALSE,lwd=1.6)
par(new=TRUE)
plot(rankI800~degreeI_ord800,log="xy",main="",ylab="",xlab="",type="s",col=3,axes=FALSE,lwd=1.6)
par(new=TRUE)
plot(rankI50~degreeI_ord50,log="xy",main="",ylab="DDF",xlab="",type="s",lwd=1.6,col=4,axes=FALSE)

#Add legend
add_legend <- function(...) {
  opar <- par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), 
    mar=c(0, 0, 0, 0), new=TRUE)
  on.exit(par(opar))
  plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
  legend(...)
}

add_legend("bottomright", legend=c("t=500", "t=800", "t=1500","t=1585"), pch=20, 
   col=c(4,3,2,1),
   horiz=TRUE, bty='n', cex=1)

dev.off()

谢谢

此代码先启动->

READ_DATA
data<-read.table("df_degree_B0.00_BC0.00_l33.33_day1")
df<-data.frame(time=data$V1,bank=data$V2,indegree_credit=data$V3,indegree_interbank=data$V6)
rm(data)

degreeI1700<-df$indegree_interbank[df$time==1700]
degreeI_ord1700<-sort(degreeI1700[degreeI1700!=0],decreasing=TRUE)
rankI1700<-c(1:length(degreeI_ord1700))

degreeI1400<-df$indegree_interbank[df$time==1400]
degreeI_ord1400<-sort(degreeI1400[degreeI1400!=0],decreasing=TRUE)
rankI1400<-c(1:length(degreeI_ord1400))

degreeI50<-df$indegree_interbank[df$time==50]
degreeI_ord50<-sort(degreeI50[degreeI50!=0],decreasing=TRUE)
rankI50<-c(1:length(degreeI_ord50))

degreeI800<-df$indegree_interbank[df$time==800]
degreeI_ord800<-sort(degreeI800[degreeI800!=0],decreasing=TRUE)
rankI800<-c(1:length(degreeI_ord800))

评论区可以下载数据库。

这是许多可能的解决方案之一。在数据上取一个峰值并选择一些合理的 xlimylim 值。然后使用 plot(NULL, xlim = c(X_LOWER, X_UPPER), ylim = c(Y_LOWER, Y_UPPER)) 创建该区域的空图,并使用 lines 函数添加每个分布。