36

ggplot2 を使用してグラフを作成しているときに、2 行にまたがりたい長い凡例名がいくつかあります。例えば:

a <- (1:10)
b <- c(1,1.5,2,4,5,5.3,7,9,9.5,9.8)
places = c("Birmingham","Chester-le-street","Cambridge", "Newcastle-upon-Tyne","Peterborough","Cambridge", "Newcastle-upon-Tyne","Peterborough","Liverpool","Stratford-upon-Avon")
df1 = data.frame(a,b,places)
library(ggplot2)
i = ggplot(df1, aes(x=a, y=b)) + geom_point(aes(colour = places), size=3) + opts(legend.position="bottom")

ボックスが下部に設定されている場合、凡例アイテムを2行または3行でラップするにはどうすればよいですか? 現時点では、伝説の 7 つのアイテムが隣り合っています。2行で表示されることをお勧めします(たとえば、一番上の行に4つの町、2番目の行に3つの町があります)。

よろしくお願いします。

4

3 に答える 3

38

わかりました、あなたの編集を考えると、おそらくこれが欲しかったでしょう:

library(scales)
i + guides(colour = guide_legend(nrow = 2))

しかし、テキスト ラッピング テクニックを使用して、テキストを収まるようにする必要があることに気付くかもしれません。

于 2012-04-26T14:13:41.923 に答える
22

あなたの例から:

df1$places<-sub("-", "- \n ", df1$places)  

i = ggplot(df1, aes(x=a, y=b)) + geom_point(aes(colour = places), size=3)

ここに画像の説明を入力

注: - gsub を使用して、すべての「-」を「- \n」に置き換えることができます

于 2012-04-26T11:42:13.383 に答える
5

私が非常に便利だと思った凡例ラベルをラップする別の方法は次のとおりです ( https://sites.google.com/site/simonthelwall/home/r/ggplot2#TOC-Wrapping-legend-labelsのすべてのクレジット):

a <- (1:10)
b <- c(1,1.5,2,4,5,5.3,7,9,9.5,9.8)
places = c("Birmingham","Chester-le-street","Cambridge", "Newcastle-upon-Tyne","Peterborough","Cambridge", "Newcastle-upon-Tyne","Peterborough","Liverpool","Stratford-upon-Avon")
df1 = data.frame(a,b,places)
library(ggplot2)
i = ggplot(df1, aes(x=a, y=b)) + geom_point(aes(colour = places), size=3) 

i + scale_colour_discrete(labels = function(x) str_wrap(x, width = 5))

ここに画像の説明を入力

于 2020-06-30T12:28:24.093 に答える