2015-02-03 8 views
0

일부 배포본의 플롯을 만들기 위해 R 소프트웨어를 사용하고 있습니다. 나는 어떤 분포가 다른 것들에 비해서 뚱뚱한 꼬리를 가지고 있는지를 봐야만한다. 그런 다음 분포는 같은 그래프에 그려 져야한다. 문제는 x 축에 있습니다. 왜냐하면 plot commandaxes = TRUE을 넣고 다른 모든 axes = FALSE에 그래프를 표시하지 않기 때문입니다 ... axes = TRUE을 넣는 분포는 잘못된 것이고 다른 하나는 잘못된 축에 그려집니다. . 그래서 누가 가장 뚱뚱한 꼬리가 있는지 알아낼 수 없습니다. 어떻게 해결할 수 있습니까? 실제로는 모든 분포가 하나의 x 축에만 표시되도록해야합니다.수정 x 축을 사용하여 R에서 동일한 그래프에 더 많은 분포를 그리는 방법

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() 

감사

이 코드 이동 발사 1 세대>

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)) 

코멘트에서 데이터베이스를 다운로드 할 수 있습니다

여기 내 코드입니다.

+0

[재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 제공하면 도움이 될 것입니다. 현재 샘플 입력 데이터가 없으므로 플롯의 모양을 알 수 없습니다. – MrFlick

+0

여기에서 다운로드 할 수 있습니다. [link] (http://www.filedropper.com/dfdegreeb000bc000l3333day11) – TheZone

+0

아마도 [this] (http://www.statmethods.net/advgraphs/layout.html)는 멀티 플롯 . – r2evans

답변

0

다음은 가능한 많은 솔루션 중 하나입니다. 데이터를 최대치로 받아 들여 합당한 xlimylim 값을 선택하십시오. 그런 다음 plot(NULL, xlim = c(X_LOWER, X_UPPER), ylim = c(Y_LOWER, Y_UPPER))을 사용하여 해당 지역의 빈 플롯을 작성하고 lines 기능으로 각 분포를 추가하십시오.

+0

불행히도 로그 - 로그 플롯을 작성해야하는데 '라인'에서 'log = xy'명령을 사용할 수 없다는 것을 깨달았습니다. – TheZone

+0

@GiacomoRosaspina 왜 음모를 꾸미기 전에 로그를 가져 가야하나요? – user12202013

+0

어떻게해야합니까? – TheZone