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_continuous
scale_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))
다음과 같은 출력 :
파고 나는 이것이 매우 간단한 문제인 것 같지만 대답을하지 않기 때문에 답변을하지 못했다고 지적 할 수 있습니다. 왜 대답하기가 어려웠습니까?
- 상단에
library(ggplot)
및 기타 전화를 포함하지 않았습니다.
- 초기 코드에서 정의되지 않은 함수가 포함되었습니다.
- 구조체를 전에 코드 대신 코드 뒤에 정의했습니다.
- 오류 메시지 자체를보고하지 않았으므로 유용했을 것입니다.
이 모든 것은 사람들이 코드 사본을 자신의 R 설치에 복사하여 붙여 넣는 것이었고 사용자가 발생한 문제를 볼 기회를 갖기 전에 여러 가지 방법으로 실패했음을 의미했습니다. 사람들 은 코드 문제를 해결하는 데 관심이있는이지만 위에서 설명한 것과 같은 문제를 해결하고 싶지는 않습니다.
반면에 사람들이 쉽게 도울 수 있다면 도움을 줄 것입니다. 게시하기 전에주의 깊게 코드를보고, 복사하고, 새로운 R 세션을 열고, 붙여넣고, 오류가 발생했는지 확인하십시오. 만약 그렇다면 위대하고 질문을 게시하십시오. 그렇지 않으면 코드를 정리하고 다시 시도하십시오. 이것은 매우 초라한 질문을 많이 게시 한 다른 초보자의 조언입니다. 당신이 이을 작성했다는 사실은 최소한의 재생산 가능한 예제를 제시하려고 시도하는 것이 좋습니다. 그러나 게시하기 전에 좀 더 생각할 필요가 있습니다. This은 다시 방문하기 좋은 질문입니다.
'month','an' 및'melt'에 어떤 패키지를 사용하고 있습니까? – BenBarnes
안녕하세요 @ 벤 바네스, 사과드립니다. 'an '은'as.numeric'과 계약하는 내 자신의 함수이고,'month'는'data에서 온 것입니다.table과 melt는'reshape2'에서 나온 것입니다. –
코드에'library()'문을 포함시키고 마지막으로'x'를 쓰는 것이 좋을까요? 그러면 코드를 복사하여 붙여 넣기 만하면됩니다. 'sfact'는 자신 만의 기능 중 하나입니까? – SlowLearner