ggplot2凡例を下および横に


109

ggplot2の凡例をプロットの下部に移動して水平に回転させるにはどうすればよいですか?

サンプルコード:

library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend())

望ましい(概算)結果: ここに画像の説明を入力してください


2
7年と8か月後、最終的にこの質問の望ましい結果を得る方法を見つけました:) 2番目の答えまでスクロールしてください。
Arthur Yip

回答:


146

凡例の位置を移動したい場合は、次のコードを使用してください:

library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend()) +
    theme(legend.position="bottom")

これにより、望ましい結果が得られます。 下の凡例


2
下部に連続する凡例バーを描くことが可能かどうか知っていますか?(そのため、間にある数ではなく上に)。ありがとう。
Janvb 2012

3
現在ではggplot、これは私に警告を与えます'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1)。交換optsによるtheme作品。
krlmlr 2013

はい、内部の仕組みに変化があると思いますggplot
Shreyas Karnik 2013

10
減価償却されたアイテムを使用することは悪い習慣です。まったく同じ方法でテーマを使用してそれを行うことができます:+ theme(legend.position='bottom')
by0

残念ながら、数字と色が並んでいると、あいまいさが生じます。これを改善するためのいくつかの試みで、以下の私の答えを参照してください。
Arthur Yip

37

望ましい結果を作成する方法は次のとおりです。

library(reshape2); library(tidyverse)
melt(outer(1:4, 1:4), varnames = c("X1", "X2")) %>%
ggplot() + 
  geom_tile(aes(X1, X2, fill = value)) + 
  scale_fill_continuous(guide = guide_legend()) +
  theme(legend.position="bottom",
        legend.spacing.x = unit(0, 'cm'))+
  guides(fill = guide_legend(label.position = "bottom"))

reprexパッケージ(v0.3.0)によって2019-12-07に作成されました


編集:これらの不完全なオプションはもう必要ありませんが、参照のためにここに残しておきます。

あなたが求めていたものを正確に提供しないが、かなり近い2つの不完全なオプション(少なくとも色を組み合わせる)。

library(reshape2); library(tidyverse)
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend()) +
 theme(legend.position="bottom", legend.direction="vertical")

p1 + scale_fill_continuous(guide = "colorbar") + theme(legend.position="bottom")

reprexパッケージ(v0.2.1)によって2019-02-28に作成されました


これは理論的には質問に答えることができますが、ここに答えの本質的な部分を含め、参照用のリンクを提供することが望ましいでしょう
Rohit Gupta

私は今、2つの不完全なソリューションを提供するために私の答えを拡張しました
アーサーYip
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.