R でロリポップ チャートを作成する方法
棒グラフと同様に、ロリポップ チャートは、カテゴリ変数の定量的な値を比較するのに役立ちます。ロリポップ チャートでは、棒を使用する代わりに、端に円が付いた線を使用して定量的な値を表します。
ロリポップ チャートは、チャート上の色の量を最小限に抑え、チャート上の線や他のグラフィックではなく、チャート上の実際の値に読者の注意を集中させながら、複数のカテゴリを比較するのに最適な方法です。多くの人は、ロリポップ ボードが見た目にも美しいと考えています。
このチュートリアルでは、次のロリポップ チャートを作成するために必要な手順を説明します。
例: R のロリポップ チャート
この例では、 mtcars組み込み R データセットを使用します。
#view first six rows of mtcars
head(mtcars)
基本的なロリポップ チャート
次のコードは、その方法を示しています。 データセット内の 32 台の各車のmpg (ガロンあたりのマイル数) を比較するロリポップ チャートを作成します。
車の名前はデータセットの行名で定義されているため、最初にこれらの行名を含む新しい列をデータセットに作成します。
次に、ロリポップ チャートの作成に使用するggplot2ライブラリを読み込みます。
ggplot2 では、 geom_segmentを使用してプロット上に線を作成します。開始 x 値と終了 x 値をそれぞれ0とmpgに設定します。開始 y 値と終了 y 値をcharとして設定します。
#create new column for car names mtcars$car <- row.names(mtcars) #load ggplot2 library library(ggplot2) #create lollipop chart ggplot(mtcars, aes(x = mpg, y = car)) + geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) + geom_point()
ラベルの追加
labelとgeom_text引数を使用してグラフにラベルを追加することもできます。
ggplot(mtcars, aes(x = mpg, y = car, label = mpg )) + geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) + geom_point() + geom_text(nudge_x = 1.5)
または、ラベルを各行の末尾に配置する代わりに、円を大きくし、ラベルのフォントの色を白に変更することで、ラベルを円自体の内側に配置することもできます。
ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) + geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) + geom_point( size = 7 ) + geom_text( color = 'white', size = 2 )
値を平均と比較する
ロリポップ チャートを使用して、値を特定の数値と比較することもできます。たとえば、データセット内の平均mpg値を見つけて、各車のmpgを平均と比較できます。
次のコードは、 dplyrライブラリを使用して平均mpg値を検索し、車をmpg の昇順に並べます。
#load library dplyr library(dplyr) #find mean value of mpg and arrange cars in order by mpg descending mtcars_new <- mtcars %>% arrange(mpg) %>% mutate(mean_mpg = mean(mpg), flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE), car = factor(car, levels = .$car)) #view first six rows of mtcars_new head(mtcars_new)
次に、次のコードは、円の色をフラグ値 (この場合は TRUE または FALSE) に設定し、各車の開始 x 値を平均mpg値に等しく設定することにより、ロリポップ チャートを作成します。
ggplot(mtcars_new, aes(x = mpg, y = car, color = flag )) + geom_segment(aes( x = mean_mpg , y = car, xend = mpg, yend = car)) + geom_point()
このタイプのカラー パレットを使用すると、データセットの平均よりも燃費が低い車と高い車を簡単に判断できます。
デフォルトでは、R はチャートの色として青と赤を使用します。ただし、 scale_color_manual引数を使用すると、任意の色を使用できます。
ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
geom_point() +
scale_color_manual(values = c("purple", "blue"))
チャートの美しさを変える
最後に、 ggplot2の幅広い機能を使用して、チャートの美しさをさらに変更し、プロフェッショナルな外観の最終製品を作成できます。
ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) + geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car), color = "grey") + geom_point() + annotate("text", x = 27, y = 20, label = "Above Average", color = "#00BFC4", size = 3, hjust = -0.1, vjust = .75) + annotate("text", x = 27, y = 17, label = "Below Average", color = "#F8766D", size = 3, hjust = -0.1, vjust = -.1) + geom_segment(aes(x = 26.5, xend = 26.5, y = 19, yend = 23), arrow = arrow(length = unit(0.2,"cm")), color = "#00BFC4") + geom_segment(aes(x = 26.5, xend = 26.5, y = 18, yend = 14), arrow = arrow(length = unit(0.2,"cm")), color = "#F8766D") + labs(title = "Miles per Gallon by Car") + theme_minimal() + theme(axis.title = element_blank(), panel.grid.minor = element_blank(), legend.position = "none", text = element_text(family = "Georgia"), axis.text.y = element_text(size = 8), plot.title = element_text(size = 20, margin = margin(b = 10), hjust = 0), plot.subtitle = element_text(size = 12, color = "darkslategrey", margin = margin(b = 25, l = -25)), plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0))