2016-06-28 200 views
1

我有一些我想繪製的數據,即布朗山頂上2013年的平均每日風速。有一分不少,所以這裏是一個看前幾行只是爲了給一個想法:格式化x軸

Mean Daily WindSpeed

我可以繪製數據,並使它看起來不錯,除了x軸。這裏是我的代碼示例至今:

>attach(Brown_Top_2013) 
>BT<-ggplot(Brown_Top_2013, aes(TIMESTAMP, Sum.Of.WS_Avg)) 
> >BT+geom_point(col="royalBlue")+labs(x="Date", y="Mean Wind Speed (m/s)", title= "Daily Mean Wind Speed 2013"+scale_x_discrete(breaks=seq(01/03/13, 12/27/13,1)) 

這可以讓我一個體面看情節,但它不包括沿x軸的任何蜱,像這樣:

Mean Daily Wind Speed Plot

最終,我想讓ggplot在x軸上顯示每個月的至少一天。 任何幫助將不勝感激,因爲我已經搜索了幾個小時,試圖找出這個問題。我有一種感覺,它可能與TIMESTAMP日期設置的方式有關,但讓我知道你的想法!

+0

也許你需要'scale_x_date',而不是'scale_x_discrete' 。 – aosmith

+0

看看'seq(01/03/13,12/27/13,1)'的輸出。它是一個單一數字(0.02564103),可能不在您的實際x範圍內,因此沒有中斷,導致缺少x軸刻度。可能你想要的東西像'seq(as.Date(「2013-01-03」),as.Date(「2013-12-12」),by =「1 day」),儘管你可能每週都想休息一下或一個月,而不是每一天。 (我在這裏假設'TIMESTAMP'被格式化爲Date,而不是字符或因素。) – eipi10

+0

另外,最好避免使用'attach',一般使用'attach',而使用'ggplot'時不需要。 「ggplot」的第一個參數是數據框,它使得數據框的列在本地ggplot環境中可用。 – eipi10

回答

1

退房scale_x_date

BT<-ggplot(Brown_Top_2013, aes(TIMESTAMP, Sum.of.WS_Avg)) 
BT+geom_point(col="royalBlue")+labs(x="Date", y="Mean Wind Speed (m/s)", title= "Daily Mean Wind Speed 2013")+scale_x_date(date_breaks = "1 month", date_labels="%b %d") 
0

另一種解決方案可能是下列之一:

BT<-ggplot(Brown_Top_2013, aes(TIMESTAMP, Sum.of.WS_Avg)) 

BT+geom_point(col="royalBlue")+ 
    labs(x="Date", 
     y="Mean Wind Speed (m/s)", 
     title= "Daily Mean Wind Speed 2013")+ 
    scale_x_discrete(
     labels = seq.Date(as.Date("01/03/13","%m/%d/%y"), as.Date("12/27/13","%m/%d/%y"), by = "day")) 

你必須改變breaks =labels =

+0

如果我正確理解scale_x_discrete函數不會試圖爲日期序列中的每一天添加標籤嗎? –

+0

對於我的例子,我嘗試過(有兩個日期)這個工程...我不知道函數'scale_x_date',所以你的答案更優雅。 –