Code heatmap.2
il Inspecter est pas possible par la conception. appelle image
pour dessiner le heatmap, et des mots-clés supplémentaires (...
) lui sont passés, appelant heatmap.2(..., cex.lab = n, ...)
le ferait, et image
considère par
, de sorte que de cette façon, il pourrait être possible. Mais ici xlab
et ylab
sont remplacés par des chaînes vides, et les deux ticklabels et les étiquettes des axes sont tracés plus tard:
# from gplots heatmap.2 source:
image(1:nc, 1:nr, x, xlim = 0.5+ c(0, nc), ylim = 0.5+ c(0, nr),
axes = FALSE, xlab = '', ylab = '', col=col, breaks=breaks,
...)
ensuite pour dessiner les étiquettes de l'axe qu'il utilise mtext
, qui n'est pas sensible aux par
paramètres, mais accepte l'argument cex
, qui est pas le cas ici:
# from gplots heatmap.2 source:
if(!is.null(xlab)) mtext(xlab, side = 1, line = margins[1] - 1.25)
if(!is.null(ylab)) mtext(ylab, side = 4, line = margins[2] - 1.25)
Il signifie que ces étiquettes sont toujours la même taille, alors que heatmaps sont énormes parfois, alors cela pourrait être un problème. En outre, on pourrait peut-être réduire le dispositif graphique, et tous les autres éléments de texte qui ont les options pour la personnalisation, puis la taille relative des étiquettes d'axe serait plus grande. Mais comment pouvons-nous résoudre cela de manière plus flexible? Je modifié le code comme ceci:
# gplots heatmap.2 code modified:
## add row and column headings (xlab, ylab)
cex.lab <- ifelse(invalid(match.call()$cex.lab), 1.0, match.call()$cex.lab)
if(!is.null(xlab)) mtext(xlab, side = 1,
line = margins[1] - 1.25 + cex.lab/5,
cex = cex.lab)
if(!is.null(ylab)) mtext(ylab, side = 4,
line = margins[2] - 1.25 + cex.lab/5,
cex = cex.lab)
Le seul problème est le paramètre de positionnement qui est maintenant cex.lab/5
, cela évite chevauchement avec ticklabels dans des gammes raisonnables, mais Maye un autre paramètre doit être ajouté à la fonction, afin que les utilisateurs peuvent modifier si ça ne va pas.
Vous pouvez copier heatmap.2.R
de gplots
source dans votre répertoire de travail, la modifier et de la source, il:
source('heatmap.2.R')
Cependant, vous devez également ajouter ces lignes au début:
require(gtools)
plot.dendrogram = stats:::plot.dendrogram
'cexRow' et les arguments 'cexCol' peuvent être utiles. avez-vous étudié «heatmap»? – bouncyball
merci, 'cexCol' et' cexRow' définissent la taille des étiquettes d'axe, pas les étiquettes d'axe. courir la même chose avec des résultats 'heatmap' la même chose: les étiquettes d'axe ne sont pas affectées – deeenes