簡體   English   中英

x軸為mm-dd時使用ggplot2編輯軸刻度標簽

[英]Editing axis tick labels with ggplot2 when x-axis is mm-dd

我有一個數據集,其中x軸是日期,但只有mm-dd(沒有年份)。 我正在使用year作為組變量,因為我試圖在同一圖上顯示YOY的變化。 X軸標簽太擁擠了,我想限制刻度線標簽,以便不顯示每個日期。 可能是隔天一次,隔三天一次,一周一次-這些中的任何一個都可以工作。

我嘗試了一些解決方案,但無法使其正常工作,因為我的x軸不是日期,而是一個字符,所以我想。 (在獲得針對x軸的mm-dd解決方案之前,我曾嘗試使用yyyy-mm-dd Date格式繪制x軸,但未能弄清楚如何使ggplot2忽略“ yyyy”部分而未能成功)

一個例子:

myDF <- data.frame(
        myDate = format(seq(as.Date("2014-02-01"), 
                 length=28, by="1 day"), "%m-%d"),
        myVar = sample(100,28),
        myGroup = sample(2,28,TRUE)
                   )
head(myDF)

  myDate myVar myGroup
  02-01    87       1
  02-02    34       1
  02-03    48       2
  02-04    59       1
  02-05    98       1
  02-06    18       2

ggplot(myDF, aes(myDate, myVar, group=myGroup, color=as.factor(myGroup))) + 
geom_line() 

此處的所有內容都是正確的,除了刻度線太緊了。

我努力了:

ggplot(myDF, aes(myDate, myVar, group=myGroup, color=as.factor(myGroup))) +   
geom_line() + scale_x_discrete(breaks = c(1,10,20))

這似乎使ggplot感到困惑,因為標簽完全消失了。 (嘗試seq()的結果相同。)

我也嘗試過:

ggplot(myDF, aes(myDate, myVar, group=myGroup, color=as.factor(myGroup))) + 
geom_line() + scale_x_date(breaks = "1 week")

這將引發錯誤:myDate不是日期。

我已經將刻度標簽的格式切換為垂直,但是在繪圖上仍然太擁擠了。

任何提示將不勝感激。 謝謝!

如果要使用不帶年份(作為字符)的myDate變量,則一種解決方案是使用scale_x_discrete() ,然后提供myDF$myDate作為breaks=參數,然后選擇要顯示的值序列。 在此示例中,我每7個值選擇一次。

ggplot(myDF, aes(myDate, myVar, group=myGroup, color=as.factor(myGroup))) +   
      geom_line() + scale_x_discrete(breaks = unique(myDF$myDate)[seq(1,28,7)])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM