0
head(bktst.plotdata)   
   date      method  product type  actuals  forecast   residual   Percent_error month
1 2012-12-31  bauwd   CUSTM  NET  194727.51  -8192.00 -202919.51       -104.21 Dec12
2 2013-01-31  bauwd   CUSTM  NET  470416.27   1272.01 -469144.26        -99.73 Jan13
3 2013-02-28  bauwd   CUSTM  NET  190943.57  -1892.45 -192836.02       -100.99 Feb13
4 2013-03-31  bauwd   CUSTM  NET  -42908.91   2560.05   45468.96       -105.97 Mar13
5 2013-04-30  bauwd   CUSTM  NET -102401.68 358807.48  461209.16       -450.39 Apr13
6 2013-05-31  bauwd   CUSTM  NET -134869.73 337325.33  472195.06       -350.11 May13

を使用してバックテスト結果をプロットしようとしていますggplot2。上記のサンプル データセット。2012 年 12 月から 2013 年 7 月までの日付があります。「メソッド」の 3 レベル、「製品」の 5 レベル、「タイプ」の 2 レベル このコードを試してみましたが、問題は、R が x 軸を正しく読み取っていないことです。 3 月、4 月、5 月、6 月、7 月、8 月 '、代わりに、R が 12 月から 7 月までをプロットすることを期待します

month.plot1 <- ggplot(data=bktst.plotdata, aes(x= date, y=Percent_error, colour=method))
facet4 <- facet_grid(product~type,scales="free_y")
title3 <- ggtitle("Percent Error - Month-over-Month")
xaxis2 <- xlab("Date")
yaxis3 <- ylab("Error (%)")
month.plot1+geom_line(stat="identity", size=1, position="identity")+facet4+title3+xaxis2+yaxis3

# Tried changing the code to this still not getting the X-axis right
month.plot1 <- ggplot(data=bktst.plotdata, aes(x= format(date,'%b%y'), y=Percent_error, colour=method))
month.plot1+geom_line(stat="identity", size=1, position="identity")+facet4+title3+xaxis2+yaxis3
4

1 に答える 1

1

さて、あなたは各月の最終日をプロットしているように見えるので、12 月 31 日が 1 月のすぐ近くにプロットされていることは実際には理にかなっています。プロットされたポイント (geom_point を使用) を見ると、各ポイントが最も近い月軸のすぐ左にあることがわかります。

実際の日付の代わりに年と月をプロットしたいようです。これを行うにはさまざまな方法がありますが、日付の日の部分を月の最後ではなく月の最初に変更することができます。ここでは、package のいくつかの関数を使用してこれを行う方法を示しますlubridate(paste変数dateは既にDateオブジェクトであると想定しています)。

require(lubridate)
bktst.plotdata$date2 = as.Date(with(bktst.plotdata, 
                                    paste(year(date), month(date), "01", sep = "-")))

次に、プロット軸は 12 月から始まります。scalesパッケージをロードすると、x 軸の形式を変更できます。

require(scales)
ggplot(data=bktst.plotdata, aes(x = date2, y=Percent_error, colour=method)) +
    facet_grid(product~type,scales="free_y") +
    ggtitle("Percent Error - Month-over-Month") +
    xlab("Date") + ylab("Error (%)") +
    geom_line() +
    scale_x_date(labels=date_format(format = "%m-%Y"))
于 2013-10-25T16:42:53.847 に答える