ggplot2在列

时间:2016-02-09 09:40:42

标签: r ggplot2

我正在尝试制作热图,随着时间的推移可视化各种类别的活动。我为此目的使用了geom_tile,乍一看它完美无缺。

enter image description here

但仔细观察上面的图表,列之间的间距非常不均匀。 x轴是Date,y轴是一个因子,因此没有充分理由为什么tile的宽度应该适应。

我尝试使用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")

1 个答案:

答案 0 :(得分:1)

我会为了这个问题而添加这个问题的答案。

事实证明,当您使用date_breaks("1 month")将日期绘制为月份时,它实际上并未在X轴上使用月份间隔。 X轴仍然是日期。这意味着月份间隔不均匀,因为不同月份的天数不同。

为了解决这个问题,我使用

将日期格式化为factor,使用上面使用的漂亮样式
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)