ggplot で作成したチャートの凡例を縦に並べる方法です。
始めに 系列名の文字数が多い 凡例のサンプル( sampledf )を作成します。
library(dplyr)
library(ggplot2)
<- 100
n <- seq(n)
x <- rnorm(n) %>% cumsum()
y1 <- rnorm(n) %>% cumsum()
y2 <- data.frame(x, y1, y2) %>%
sampledf
{colnames(.)[2:3] <- c("いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせす ん", "あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ まみむめも やゆよ らりるれろ わを ん")
.
}colnames(sampledf) %>% matrix()
[,1]
[1,] "x"
[2,] "いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせす ん"
[3,] "あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ まみむめも やゆよ らりるれろ わを ん"
ggplot を利用して線グラフのチャートを作成します。その際、凡例はチャート上部に配置します。
<- sampledf %>% tidyr::gather(key = "系列", value = "value", colnames(.)[-1])
tidydf <- tidydf %>% ggplot(mapping = aes(x = x, y = value, col = 系列)) +
g geom_line() +
theme(legend.position = "top")
g
系列名称が長いため凡例がチャート内に収まっていません。
関数 guides {ggplot2} を利用して、凡例を 縦方向 に 2列 で配置します。
<- 2
n.row + guides(color = guide_legend(nrow = n.row)) g
凡例が収まりました。
続いて 棒グラフ の場合です。
%>% ggplot(mapping = aes(x = x, y = value, fill = 系列)) +
tidydf geom_bar(stat = "identity") +
theme(legend.position = "top") +
guides(fill = guide_legend(nrow = n.row))
最後は 点グラフ の場合です。
%>% ggplot(mapping = aes(x = x, y = value, shape = 系列)) +
tidydf geom_point(size = 2) +
theme(legend.position = "top") +
guides(shape = guide_legend(nrow = n.row))
以上です。