I made a Heatmap and corresponding dendrograms in R ggplot2. However, I'm wondering how can I increase the size of the dendrogram at the exported high-resolution image. Precisely, I want to increase the breadth of both Dendrograms so that the clustering between the elements in the plot can be properly visualized.
Data:
> SampleDat
CCC CS G1 G2 G3 LMS USC
ASCL2 0 0.00000000 0.0000000 0.00000000 0.19791230 0.0000000 -0.2589399
THRB-AS1 0 0.15478030 0.0000000 0.15665590 -0.05063790 0.0000000 -0.1702256
ZFAND2A 0 0.37089000 0.4538498 0.00000000 0.34598680 0.0000000 0.3016402
C10orf82 0 0.13880730 0.0000000 0.15742300 0.18315680 0.0000000 0.1487810
ADAMTS16 0 0.18127015 0.0000000 0.17522080 -0.15981700 0.0000000 0.0000000
LOC107985287 0 -0.04640695 0.1287075 0.12656770 0.21860815 -0.3203314 0.3492471
LOC105375610 0 0.16883540 0.0000000 0.00000000 0.18512860 -0.3199183 0.0000000
LINC00485 0 -0.17285620 0.3035464 -0.10216190 -0.69079680 -0.1887855 0.0000000
PKMYT1 0 0.00000000 0.0000000 0.00000000 0.00000000 -0.3447935 0.0000000
TBX4 0 0.13699000 0.0000000 0.00000000 0.00000000 0.2159004 0.1126036
CNTN4 0 0.11820680 0.0000000 0.11894160 0.00000000 0.0000000 0.2915814
SUMF1 0 0.00000000 0.0000000 0.00000000 0.00000000 -0.6267713 0.0000000
SLC25A13 0 -0.09982340 0.2151051 0.09800212 -0.26193367 0.0000000 -0.3921427
LOC107984568 0 0.00000000 0.0000000 0.24254940 -0.05271005 -0.4876733 0.0000000
HS3ST2 0 0.14462475 0.0000000 0.10068490 0.00000000 0.1197004 0.1814833
C1orf141 0 -0.23244100 0.0000000 0.11186150 -0.07326740 -0.3609651 0.0000000
VGLL2 0 0.00000000 0.0000000 -0.23984550 0.10843580 0.2534536 0.0000000
REXO2 0 0.00000000 0.0000000 0.00000000 -0.53392505 0.0000000 -0.3302150
PAX6 0 0.22198410 0.0000000 0.19559730 0.00000000 0.2500406 0.0000000
H4C13 0 0.00000000 0.0000000 0.00000000 0.00000000 0.4118989 0.0000000
Script:
library("readr")
library("dplyr")
library("ggh4x")
library("ggsci")
library("ggplot2")
# Hierarchically cluster AllGrpDMRgene_mat
SampleDat_yclus <- hclust(dist(SampleDat), "ave")
SampleDat_xclus <- hclust(dist(t(SampleDat)), "ave")
# Melting SampleDat
SampleMelt <- data.frame(
SYMBOL = rownames(SampleDat)[row(SampleDat)],
Group = colnames(SampleDat)[col(SampleDat)],
Mdiff = unname(do.call(c, SampleDat))
)
#mutating a new column for +ve and -ve
Sample_Plotdat<-SampleMelt %>%
mutate(status = case_when(Mdiff < 0 ~ "low",
Mdiff > 0 ~ "high"))
#making status as factor
Sample_Plotdat$status<-as.factor(Sample_Plotdat$status)
# Supply the clustering to the scales
HeatDenTest<-ggplot(Sample_Plotdat, aes(Group, SYMBOL, fill = status)) +
geom_raster() +
xlab("Histological Groups") +
ylab("Gene Symbol") +
scale_fill_nejm(labels=c('Negative','Positive' ), name="")+
scale_y_dendrogram(hclust = SampleDat_yclus) +
scale_x_dendrogram(hclust = SampleDat_xclus, position = "top")+
theme(axis.text.y = element_text(size=rel(.3), vjust = 0.5, hjust=1),
axis.title.y = element_text(size=rel(4)),
axis.ticks.y = element_blank(),
axis.text.x = element_text(size=rel(3), vjust = 0.5, hjust=1),
axis.title.x = element_text(size=rel(4)),
legend.position = "bottom",
legend.text=element_text(size=40),
legend.key.size = unit(3, 'cm'))
ggsave("HeatDenTest.jpeg", plot = HeatDenTest, width = 18, height =30, units = "in", dpi = 200)
The Dimension of the Original plot is quite large (width = 18, height = 30, units = "in", dpi = 600), because of the size restriction a low-resolution plot is shown here.

As a first step, I would suggest to stick with the default font sizes set by the theme or set the base font size globally using the
base_size=argument of the theme, e.g.theme_grey(base_size = ...). Second, when it comes to exporting you can account for the size of your plot by using e.g. thescale=argument ofggsave(). Finally, when usingscale_x/y_dendrogramHence, you can change the appearance of the dendrograms using the theme options for the ticks, e.g. you could increase the size of the dendrograms using
axis.ticks.length: