2016-12-12 6 views
3
Тепловой карты

Я нанесен на Heatmap так:Поверните верхний треугольник из ggplot плитки

ggplot(test, aes(start1, start2)) + 
    geom_tile(aes(fill = logFC), colour = "gray", size=0.05) + 
    scale_fill_gradientn(colours=c("#0000FF","white","#FF0000"), na.value="#DAD7D3") 

Строит верхний треугольник с тепловой картой. То, что я хотел бы построить, это тот же самый треугольник, но с гипотенузой, как x-axis.

enter image description here

Как бы мне это сделать?


Edit: Добавлено воспроизводимый пример

library(ggplot2) 

# dummy data 
df1 <- mtcars[, c("gear","carb", "mpg")] 

# normal tile plot 
gg1 <- ggplot(df1, aes(gear, carb, fill = mpg)) + 
    geom_tile() + 
    xlim(c(1, 10)) + 
    ylim(c(1, 10)) + 
    theme_void() + 
    theme(legend.position = "none") 

enter image description here

Ожидаемый результат (поворачивается вручную):

enter image description here

Похожие темы нас ИНГ базовый участок image(): Visualising and rotating a matrix

Возможный пример решения код в LDheatmap package с помощью grid.

+0

@Gregor Я думаю, что они/я хочу 45 градусов , – zx8754

+1

У вас будет верх над этим, но ответ @ baptiste на [этот Q] (https://stackoverflow.com/questions/24312713/rotate-a-ggplot2-plot-object) заставит вас закрыть, если вы сможете разрешить проблемы отсечения. – BrodieG

+0

@BrodieG действительно достаточно близко, но проблемы отсечения. – zx8754

ответ

0

Использование this solution получает выход усеченный в нижней части, так что обходной путь будет добавить дополнительные поля сюжетных затем использовать grid::viewport() вращаться:

library(ggplot2) #ggplot2_2.2.1 
library(grid) 

gg1 <- ggplot(df1, aes(gear, carb, fill = mpg)) + 
    geom_tile() + 
    xlim(c(1, 10)) + 
    ylim(c(1, 10)) + 
    theme_void() + 
    # add extra margins 
    theme(legend.position = "none", 
     plot.margin = unit(c(1, 1, 1, 1), "cm")) 

# then rotate 
print(gg1, vp = viewport(angle = 45)) 

enter image description here