2012-12-03 2 views
0

나는 미국 연방 정부 웹 사이트에서 이자율 데이터를 얻었으므로 수익률 곡선을 그릴 계획입니다. 나는 이것을 다른 사람들과 비교하기 위해 사용하고 시간이 지남에 따라 일관성을 유지하려고한다. 가능한 한 많은 국가에서 동일한 축 범위를 가능한 한 길게 유지하고 싶다. 다음 코드 코드 scale_y_continuous(limits=c(0,7)) 또는 ylim(0,7)은 모두 오류를 발생시킵니다. 누구든지 내가 잘못하고있는 것에 대해 어떤 생각을 가지고 있습니까? 감사합니다.ggplot을 사용하여 y 축 확장하기

library(reshape2) 
library(data.tool) 
library(ggplot2) 

    x = structure(list(Series.Description = c("2012-07-27", "2012-10-26" 
     ), `1.month` = c("0.08", "0.12"), `6.month` = c("0.15", "0.15" 
     ), `1.year` = c("0.17", "0.19"), `2.year` = c("0.23", "0.30"), 
      `5.year` = c("0.59", "0.78"), `10.year` = c("1.47", "1.81" 
      ), `30.year` = c("2.51", "2.94")), .Names = c("Series.Description", 
     "1.month", "6.month", "1.year", "2.year", "5.year", "10.year", 
     "30.year"), row.names = c(1L, 4L), class = "data.frame") 


    # dates as # of days 
    z=c(30,182,365,730,1825,3650,10950) 
    names(x)[1]="date" 
    names(x)[-1]=c(30,182,365,730,1825,3650,10950) 
    x=melt(x,id.vars=c(1)) 
    x$variable=levels(x$variable)[x$variable] 
     x$variable=as.numeric(x$variable) 

    ggplot(data=x,aes(x=variable,y=value,group=date,linetype=date)) + 
     geom_line(colour="red") + geom_point(colour="red") + 
     scale_x_continuous(breaks=z,labels=c("1M","6M","1Y","2Y","3Y","5Y","10Y")) + 
     scale_linetype_manual(values=c(2,1)) + 
     scale_y_continuous(limits=c(0,7)) 
+0

'month','an' 및'melt'에 어떤 패키지를 사용하고 있습니까? – BenBarnes

+0

안녕하세요 @ 벤 바네스, 사과드립니다. 'an '은'as.numeric'과 계약하는 내 자신의 함수이고,'month'는'data에서 온 것입니다.table과 melt는'reshape2'에서 나온 것입니다. –

+0

코드에'library()'문을 포함시키고 마지막으로'x'를 쓰는 것이 좋을까요? 그러면 코드를 복사하여 붙여 넣기 만하면됩니다. 'sfact'는 자신 만의 기능 중 하나입니까? – SlowLearner

답변

4

str(x)을하면 어떤 일이 벌어지는 지 알 수 있습니다.

> str(x) 
'data.frame': 14 obs. of 3 variables: 
$ date : chr "2012-07-27" "2012-10-26" "2012-07-27" "2012-10-26" ... 
$ variable: num 30 30 182 182 365 ... 
$ value : chr "0.08" "0.12" "0.15" "0.15" ... 

value

는 문자가 아닌 자신의 의견에 mnel 상태로 숫자입니다. 따라서 value 열을 숫자 데이터 형식으로 변경하면 적어도 플롯해야합니다. 그것이 당신이 원하는 출력을 제공하든간에 또 다른 문제입니다. 아래의 코드는 나를 위해 작동하는 것 같습니다.

x <- structure(list(Series.Description = c("2012-07-27", "2012-10-26" 
    ), `1.month` = c("0.08", "0.12"), `6.month` = c("0.15", "0.15" 
    ), `1.year` = c("0.17", "0.19"), `2.year` = c("0.23", "0.30"), 
     `5.year` = c("0.59", "0.78"), `10.year` = c("1.47", "1.81" 
     ), `30.year` = c("2.51", "2.94")), .Names = c("Series.Description", 
    "1.month", "6.month", "1.year", "2.year", "5.year", "10.year", 
    "30.year"), row.names = c(1L, 4L), class = "data.frame") 


# dates as # of days 
z <- c(30,182,365,730,1825,3650,10950) 
names(x)[1] <- "date" 
names(x)[-1] <- c(30,182,365,730,1825,3650,10950) 
x <- melt(x, id.vars = c(1)) 
#x$variable=levels(x$variable)[x$variable] 
# x$variable=as.numeric(x$variable) 
x$value <- as.numeric(x$value) 

ggplot(data = x, aes(x = variable, y = value, group = date, linetype = date)) + 
    geom_line(colour = "red") + geom_point(colour = "red") + 
    scale_x_discrete(breaks = z, labels = c("1M","6M","1Y","2Y","3Y","5Y","10Y")) + 
    scale_linetype_manual(values = c(2,1)) + 
    scale_y_continuous(limits = c(0,7)) 

이것은 제공 : 당신이 x$variable 바이올린 위치를 실제로 단지 x 축을 따라 일정한 간격으로 라벨, 당신은 아마도 scale_x_continuousscale_x_discrete로 변경하고 비트를 제거하려고해야합니다

library(reshape2) 
library(ggplot2) 

x = structure(list(Series.Description = c("2012-07-27", "2012-10-26" 
    ), `1.month` = c("0.08", "0.12"), `6.month` = c("0.15", "0.15" 
    ), `1.year` = c("0.17", "0.19"), `2.year` = c("0.23", "0.30"), 
     `5.year` = c("0.59", "0.78"), `10.year` = c("1.47", "1.81" 
     ), `30.year` = c("2.51", "2.94")), .Names = c("Series.Description", 
    "1.month", "6.month", "1.year", "2.year", "5.year", "10.year", 
    "30.year"), row.names = c(1L, 4L), class = "data.frame") 


# dates as # of days 
z=c(30,182,365,730,1825,3650,10950) 
names(x)[1]="date" 
names(x)[-1]=c(30,182,365,730,1825,3650,10950) 
x=melt(x,id.vars=c(1)) 
x$variable=levels(x$variable)[x$variable] 
    x$variable=as.numeric(x$variable) 
x$value <- as.numeric(x$value) 

ggplot(data=x,aes(x=variable,y=value,group=date,linetype=date)) + 
    geom_line(colour="red") + geom_point(colour="red") + 
    scale_x_continuous(breaks=z,labels=c("1M","6M","1Y","2Y","3Y","5Y","10Y")) + 
    scale_linetype_manual(values=c(2,1)) + 
    scale_y_continuous(limits=c(0,7)) 

다음과 같은 출력 :

plot

파고 나는 이것이 매우 간단한 문제인 것 같지만 대답을하지 않기 때문에 답변을하지 못했다고 지적 할 수 있습니다. 왜 대답하기가 어려웠습니까?

  1. 상단에 library(ggplot) 및 기타 전화를 포함하지 않았습니다.
  2. 초기 코드에서 정의되지 않은 함수가 포함되었습니다.
  3. 구조체를 전에 코드 대신 코드 뒤에 정의했습니다.
  4. 오류 메시지 자체를보고하지 않았으므로 유용했을 것입니다.

이 모든 것은 사람들이 코드 사본을 자신의 R 설치에 복사하여 붙여 넣는 것이었고 사용자가 발생한 문제를 볼 기회를 갖기 전에 여러 가지 방법으로 실패했음을 의미했습니다. 사람들 은 코드 문제를 해결하는 데 관심이있는이지만 위에서 설명한 것과 같은 문제를 해결하고 싶지는 않습니다.

반면에 사람들이 쉽게 도울 수 있다면 도움을 줄 것입니다. 게시하기 전에주의 깊게 코드를보고, 복사하고, 새로운 R 세션을 열고, 붙여넣고, 오류가 발생했는지 확인하십시오. 만약 그렇다면 위대하고 질문을 게시하십시오. 그렇지 않으면 코드를 정리하고 다시 시도하십시오. 이것은 매우 초라한 질문을 많이 게시 한 다른 초보자의 조언입니다. 당신이 을 작성했다는 사실은 최소한의 재생산 가능한 예제를 제시하려고 시도하는 것이 좋습니다. 그러나 게시하기 전에 좀 더 생각할 필요가 있습니다. This은 다시 방문하기 좋은 질문입니다.

+0

@SlowLearner님께 감사드립니다. 링크의 질문에 대한 답변을 드리겠습니다. –