2016-02-09 57 views
2

我試圖做一個熱圖圖,隨着時間的推移可視化各個類別的活動。我爲此使用了geom_tile,乍一看它完美運行。ggplot2創建列之間不均勻的間距

enter image description here

但在列之間的間隔在上述圖表密切關注是非常不均勻的。 x軸是Date,y軸是一個因子,所以瓷磚寬度應該適應的原因沒有很好的理由。

我已經嘗試使用aes(width = X)更改瓷磚的寬度,但那不能解決問題。

繪圖代碼中使用,在那裏我已刪除我肯定知道的元素不能影響這個問題:

ggplot(monthlyEvents, aes(x=YearMonth, y=EventType, fill=EventRate)) + geom_tile(colour=bgcolor) + 
    scale_x_date(breaks = date_breaks("1 month"), labels=date_format("%b %Y"), expand = c(0,0)) + 
    theme(axis.text.x = element_text(angle = 45, hjust = 1))+ 
    theme(panel.background=element_rect(fill=bgcolor, colour=bgcolor), panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), panel.border = element_blank()) + 
    scale_fill_gradientn(colours=palette, na.value="grey39") 
+3

不同月份有不同的長度,以避免這樣的情況繪製 – inscaven

+0

以前那樣描述下我寧願數據變量轉換爲字符或因素這是它!這個問題是否重複?如果是這樣,我會刪除它。否則,請隨時發佈答案。 –

回答

1

我要的答案添加到這個問題,爲別人着想誰上臺看着。

事實證明,當你使用作爲月份繪製日期時,它實際上並不使用X軸上的月份間隔。 X軸仍然是日期。這意味着月份的間隔不均勻,因爲不同的月份有不同的天數。

要解決這個問題,我格式化的日期因素,我上面使用的漂亮造型,採用

niceFormatting <- format(events$YearMonth, "%Y %b") 
MonthFactor <- factor(niceFormatting, levels = niceFormatting) 

MonthFactor繪製爲X軸爲我所預料的制定。沒有所有的格式:

ggplot(monthlyEvents, aes(x=MonthFactor, y=EventType, fill=EventRate)) + geom_tile(colour=bgcolor) 
+0

我很難從問題跳轉到回答 - 你還在使用scale_x_date()嗎?無論如何,你可以將解決方案與上面的圖表聯繫起來嗎?謝謝! – wphampton

+0

抱歉不清楚。不,我完全擺脫了Date類型,因爲縮放無法正常工作,並且還刪除了scale_x_date。然後用字符串因子繪製在x軸上。爲了清晰起見,我會更新。格式化會產生格式爲「2017 aug」的字符串,該空格很好而且均勻,因爲它們只是一個沒有線性關係的因素。 –