始める無料で始める

モバイルデバイス向けにプロットを最適化する

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(xlabel)を正しく指定します。それぞれ 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)
  )
コードを編集して実行