モバイルデバイス向けにプロットを最適化する
x 軸のタイトルは、両年のラベルをすでに追加しているため、かなり不要になっています。ここでは国名ラベルをプロットに追加し、すべての軸を削除します。
この演習では、おそらく初めて目にする手法を使います。geom_text() のような単一のジオメトリに対して、新しいデータセットを個別に指定することができます。その場合、最初の ggplot() 呼び出しで指定したデータセットは使われません。この演習でこの手法が必要な理由は、各矢印に対してラベルを 1 つ だけ追加したいからです。元のデータセット ilo_data を使うと、各国に 1996 年と 2006 年の 2 つの観測値があるため、ラベルが 2 つ追加されてしまいます。
この演習はコースの一部です
Tidyverseによるデータコミュニケーション
演習の手順
- 国ごとにラベルが 1 つになるよう、新しいデータセット
median_working_hoursが作成されています。str()を使って、その構造を確認しましょう。 - 新しい
geom_text()の呼び出しでdata引数にmedian_working_hoursを指定し、各国のラベルを追加します。geom_text()に必要な aesthetics(xとlabel)を正しく指定します。それぞれmedian_working_hoursデータセット内の適切な変数を参照するようにしてください。
- カスタム
theme()の呼び出しで、axis.とpanel.gridのすべての引数にelement_blank()を指定し、すべての軸と背景グリッドを削除します。 - 最終的なコードを実行したら、右側のプロットウィンドウのサイズを変更して、縦長のモバイルデバイス画面(幅が狭く縦長)をシミュレートしてみましょう。すべてのラベルがプロットの表示領域に収まることを確認できます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Compute temporary data set for optimal label placement
median_working_hours <- ilo_data %>%
group_by(country) %>%
summarize(median_working_hours_per_country = median(working_hours)) %>%
ungroup()
# Have a look at the structure of this data set
___
ilo_dot_plot +
# Add label for country
geom_text(data = ___,
aes(y = country,
x = ___,
label = ___),
vjust = 2,
family = "Bookman",
color = "gray25") +
# Remove axes and grids
theme(
axis.ticks = ___,
axis.title = ___,
axis.text = ___,
panel.grid = ___,
# Also, let's reduce the font size of the subtitle
plot.subtitle = element_text(size = 9)
)