あなたがそうするならば、あなた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
列を数値データ型に変更すると、少なくともプロットする必要があります。それがあなたが望む出力を与えるかどうかは別の問題です。以下のコードは私にとってはうまくいくようです。
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))
実際にx軸に沿って一定の間隔でラベルが必要な場合は、に変更して、いじる部分を削除してみscale_x_continuous
てscale_x_discrete
くださいx$variable
。
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))
これにより、次の出力が得られます。

少し逸脱しますが、これは非常に単純な問題のようですが、答えが難しくなったため、答えられていません。なぜ答えるのが難しかったのですか?
library(ggplot)
上部におよびその他の通話を含めませんでした。
- 初期コードで定義されていない関数を含めました。
- コードの前ではなく、コードの後に構造を定義しました。
- エラーメッセージ自体を報告しなかったので、役に立ちました。
これはすべて、人々があなたのコードのコピーをコピーしてRインストールに貼り付けていて、あなたが経験している問題を見る機会を得る前に、さまざまな方法で失敗していたことを意味しました。ここの人々はあなたのコードの問題を修正することに興味がありますが、上で概説したような問題をいじりたくないのです。
一方、人々が助けやすいようにすれば、彼らは助けてくれるでしょう。したがって、投稿する前にコードを注意深く見て、コピーし、新しいRセッションを開いて貼り付け、発生したエラーまで機能するかどうかを確認してください。もしそうなら、素晴らしいです、先に進んで質問を投稿してください。そうでない場合は、コードをクリーンアップして再試行してください。これは、SOにあまり良くない質問をいくつか投稿した別の初心者からのアドバイスです。あなたが最小限の再現可能な例をまとめようとしたという事実は、あなたがそれを正しくすることに熱心であることを示唆していますが、おそらく投稿する前にもう少し考える必要があります。これは、再検討するのに最適な質問です。