5

を使用して x 軸が上に移動する相関ヒートマップを作成しようとしていcowplot::switch_axis_positionます。さまざまな長さの軸ラベルがあり、ラベルを左揃えにします (90 度回転しているため、下揃えにする必要があります)。なんとかラベルを揃えることができましたが、ラベルはプロットのはるか上に移動しています。

library(reshape2)
library(ggplot2)
library(cowplot)

# some toy data
set.seed(1)
mydata <- mtcars[, c(1, 3, 4, 5, 6, 7)]

# to show difference in justification better, make names of unequal length 
names(mydata) = paste0(sample(c("mtcars_", ""), 6, replace = TRUE), names(mydata))
cormat <- round(cor(mydata), 2)

melted_cormat <- melt(cormat)
head(melted_cormat)

まず、x 軸が上に移動し、ラベルが垂直方向の中央に配置されたプロット:

plot <- ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) + 
        geom_tile() +
        theme_bw(base_size=20) + xlab("") + ylab("") +
        theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 0.5))
ggdraw(switch_axis_position(plot, 'x'))

リンク

次に、上記と同じコードを使用しますが、hjust = 0代わりに x 軸のテキストを左揃えにします。確かにテキストは整列されますが、テキストはグラフから奇妙に遠くに移動されるため、変数名は切り取られます。リンク

これを修正する方法のアイデアはありますか?

4

1 に答える 1

6

注意: このバグは、cowplotCRAN の最新バージョンには存在しません。

古い答え:

これは の特殊なケースのバグのようですangle = 90。に任意の小さな値を追加することで、これを回避できますangle

plot <- ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) + 
  geom_tile() + theme_bw(base_size=20) + xlab("") + ylab("")+
  theme(axis.text.x=element_text(angle=90 + 1e-09, hjust = 0, vjust=1)) +
  coord_equal(expand = 0)
ggdraw(switch_axis_position(plot, 'x'))

ここに画像の説明を入力

于 2016-02-17T18:43:57.933 に答える