R ggplot2 тепловая карта с осью X даты - удалить серые области

Я пытаюсь отобразить тепловую карту для потребления электроэнергии домохозяйством в Западной Европе, на оси X все дни года, на оси Y- часы в день, на карте тепла показано количество электроэнергии, использованной в кВтч. в час в день. Вот что я получил до сих пор: Тепловая карта Потребление энергии Моя проблема состоит в том, чтобы масштабировать ось X даты так, чтобы серые ленты слева и справа от графика исчезли. Зная, как раскрыть (), то есть ограничить отображение данных минимальными, максимальными значениями для числовых данных, трудно найти решение для даты по оси X.

Вот что я использую для доставки вышеупомянутого сюжета:

hm.palette <- colorRampPalette(rev(brewer.pal(11, 'Spectral')), space='Lab')
heatmap_print <- ggplot(MyData, aes(y=Time, x=Day, fill=Totaal)) + 
geom_tile(aes(height=1)) +
scale_fill_gradientn(colours = hm.palette(100)) 
print(heatmap_print + 
    scale_y_continuous(name = "Hour of day", breaks = seq(0, 23, by=1), expand = c(0, 0)) + 
    scale_x_date(name = "Month of year", 
                 breaks = seq(as.Date("2009-01-15"), 
                              as.Date("2009-12-15"), 
                              by = "1 month"), date_labels ="%B"))

Благодарен за любые идеи.

1 ответ

Решение

Если вы просто хотите избавиться от серого, попробуйте что-нибудь с themes() как это:

hm.palette <- colorRampPalette(rev(brewer.pal(11, 'Spectral')), space='Lab')
heatmap_print <- ggplot(MyData, aes(y=Time, x=Day, fill=Totaal)) + 
geom_tile(aes(height=1)) +
scale_fill_gradientn(colours = hm.palette(100)) 
print(heatmap_print + 
    scale_y_continuous(name = "Hour of day", breaks = seq(0, 23, by=1), expand = c(0, 0)) + 
    scale_x_date(name = "Month of year", 
                 breaks = seq(as.Date("2009-01-15"), 
                              as.Date("2009-12-15"), 
                              by = "1 month"), date_labels ="%B")) +
    theme(panel.background = element_blank(),
          plot.background = element_blank())

В противном случае вам нужно будет использовать coord_cartesian(xlim = c(X, X), ylim = c(X, X)) или просто xlim(X, X) + ylim(X, X)

Другие вопросы по тегам