目標対実績のグラフをどのように描けばいいのか?

1年間に達成したい売上目標がある場合、毎月の実績が目標に対してどれだけ達成されているかを視覚化することは非常に重要です。 目標に対する実績 グラフで毎月の成果を確認し、年末にどれだけ超過達成したかも一目瞭然です。

목표 대비 실적 그래프

今日は Rを使用して売上目標と実績を毎月可視化するで、最終的に目標を10%超過達成した事例を作ってみます。 ポストの一番下に全体のコードがあるので、上の図をすぐに確認したい方は貼り付けて実行してみてください。

1.目標と実績データを作成する

まずは、毎月の目標と実績データを作成します。目標は毎月一定に増加する形で設定し、実績は目標より若干超過達成し、最終的に年間目標を10%超過達成するデータを作成してみます。

# 必要なパッケージのロード
library(ggplot2) # ggplot2 パッケージをロードしてグラフを描くための関数を使用します。
library(scales) # scalesパッケージをロードして数値形式(例えば、コンマを追加)のような軸の設定を簡単にすることができます。

#データの生成
set.seed(123) # set.seed() 関数を使って乱数のシードを固定して実行するたびに同じ乱数結果を得るようにします。
months <- 1:12 # 1から12までの数字をmonths変数に保存して12ヶ月を表します。
monthly_goal <- 1000000 # 毎月の売上目標を1,000,000 KRWに設定します。
goals <- cumsum(rep(monthly_goal, 12)) # 目標を累積合計で算出して年間目標を月別累積で表現します。

#の実績を目標より5%~15%超過する乱数を乗じて累積合計で算定します。
achievements <- cumsum(goals * runif(12, min = 1.05, max = 1.15))

# データフレームの生成
data <- data.frame(
    Month = factor(months, levels = months, labels = month.name), # 1から12までの値を月名(例: January, February)に変換してMonth列を生成します。
    Goal = goals, # 月別累積目標をGoal列に保存します。
    Achievement = achievements, # 月別累積実績をAchievement列に保存します。
)

# 年間目標と実績の合計を計算します。
annual_goal <- tail(goals, 1)[[1]]= #        # 年間目標をgoalsの最後の値に設定します(つまり、累積合計の最終値)。
annual_achievement <- tail(achievements, 1)[[1]]]  # 年間実績を achievements の最後の値に設定します (つまり、累積合計の最終値)。
achievement_rate <- (annual_achievement / annual_goal) * 100 # 目標に対する実績達成率を計算してパーセンテージで表します。

コードの説明:

  • set.seed(123): 乱数を固定して実行するたびに同じ結果を得るためです。
  • 目標: 毎月の目標金額を累積して年間目標を算出します。
  • 実績毎月、目標を少し上回るランダムな値で実績を計算して累積します。
  • data.frame()目標と実績データを データというデータフレームとして作成し、グラフ作成に使用します。
  • annual_goal, annual_achievement年間目標と実績の最終累積値を計算して保存します。
  • 達成率目標に対する実績達成率をパーセンテージで計算します。

2.目標対実績Rグラフを作成する

それでは、目標と実績を一つのグラフに視覚化して比較してみましょう。 目標は赤い点線として、 実績は青い線で表示して、一目で違いを確認できるようにします。

# 目標に対する実績グラフを作成
ggplot(data, aes(x = Month)) + ggplot(data, aes(x = Month))
  geom_line(aes(aes(y = Goal), color = "red", linetype = "dashed", size = 1, label = "Goal") +
  geom_line(aes(aes(y = Achievement), color = "blue", size = 1, label = "実績") + + geom_line(aes(y = Achievement), color = "blue", size = 1, label = "실적")
  labs(title = "目標対実績グラフ"、
       subtitle = paste("年間目標:", annual_goal, "円、年間実績:", round(annual_achievement), "円\n達成率:", round(achievement_rate, 2), "%")、
       x = "月", y = "累積売上高(円)") +
  annotate("text", x = 12, y = max(data$Achievement), label = paste("年間超過達成:", round(achievement_rate - 100, 2), "%"), vjust = -1, color = "blue") +
  theme_minimal()

コードの説明:

  • geom_line(aes(y = Goal)):毎月の目標売上を赤い点線で表示します。
  • geom_line(aes(y = Achievement)):毎月の実績を青い実線で表示し、目標に対する実績を簡単に比較することができます。
  • labs(): グラフタイトルと年間目標と実績、そして達成率を字幕で表示します。
  • annotate(): グラフに年間超過達成率を追加し、目標に対してどの程度超過達成したかを視覚的に表示します。

3.目標と実績のグラフをより洗練された形で可視化する

基本的な目標対実績Rグラフを作成したら、次はもう少し洗練されたグラフを視覚化してみましょう。色、背景、強調要素などを追加して、グラフをより視覚的に豊かにしてみましょう。 これにより、グラフの読みやすさを高め、メッセージをより強く伝えることができます。

以下は、グラフをおしゃれに飾るための追加コードと説明です。

# 目標に対する実績グラフを作成
ggplot(data, aes(x = Month)) + 1
    geom_line(aes(aes(y = Goal, group = 1), color = "red", linetype = "dashed", size = 1.5) + # 目標線を赤い点線で表示、太さ 1.5
    geom_line(aes(aes(y = Achievement, group = 1), color = "blue", size = 1.5) + # 実績線を青い実線で表示、太さ1.5
    labs(title = "Performance vs. Goal Graph", # グラフタイトル設定
         subtitle = paste("Annual Goal:", comma(annual_goal), "KRW, Annual Achievement:", comma(round(annual_achievement)), "KRW\nAchievement Rate:", round(achievement_rate, 2), "%")、
         # グラフの副題設定: 年間目標と実績、達成率を表示します。
         x = "Month", y = "Cumulative Sales (KRW)") + # x軸と y軸のラベル設定
    scale_y_continuous(labels = comma、limits = c(0, max(c(annual_goal, annual_achievement))* 1.2)) + # y軸をカンマ形式で表示し、範囲を最大値の120%に設定します。
    annotate("text", x = 12, y = max(achievements) * 1.1, label = paste("Annual Exceedance:", round(achievement_rate - 100, 2), "%")、
             vjust = -1, hjust = 1, color = "blue") + # 年間超過達成率をテキストで表示し、位置を調整する
    theme_minimal() # 最小限のテーマ適用

コードの説明:

  • geom_line()目標と実績をそれぞれ赤い点線と青い実線で表示します。
  • labs():グラフのタイトルと小見出しを設定します。小見出しには、年間目標、年間実績、達成率が含まれます。
  • scale_y_continuous(): y軸をコンマ形式で表示し、最大値の120%でy軸の範囲を設定して、グラフが余裕を持って見えるようにします。
  • annotate("text", ...): グラフの右上に超過達成率のテキストを表示し、位置を調整します。
  • theme_minimal(): 最小限のテーマを適用して、グラフがきれいに見えるようにします。

まとめ:目標対実績のグラフでパフォーマンスを分析する

このグラフにより、毎月の目標と実績を比較し、パフォーマンスを簡単に確認することができます。年末に目標を超過達成した割合を表示することで、成果を強調することができ、年間の成果分析に大いに役立ちます。皆さんもこのコードを活用して自分の目標と実績を視覚化し、目標に対する成果を追跡してみてください!

#全コード

# 必要なパッケージの読み込み
library(ggplot2)
library(scales)

# データ生成
set.seed(123)
months <- 1:12
monthly_goal <- 1000000 #の毎月の売り上げ目標
goals <- cumsum(rep(monthly_goal, 12)) #の目標を累積合計で算定
achievements <- cumsum(goals * runif(12, min = 1.05, max = 1.15)) #の実績を累積合計で算定

# データフレーム生成
data <- data.frame(
    Month = factor(months, levels = months, labels = month.name)、
    Goal = goals、
    Achievement = achievements
)

# 年間目標と実績の合計を計算します。
annual_goal <- tail(goals, 1)[[1]]]
annual_achievement <- tail(achievements, 1)[[1]]]
achievement_rate <- (annual_achievement / annual_goal) * 100

#目標に対する実績グラフを作成
ggplot(data, aes(x = Month)) + + ggplot(data, aes(x = Month))
    geom_line(aes(y = Goal, group = 1), color = "red", linetype = "dashed", size = 1.5) + + ggplot(data, x = Month)
    geom_line(aes(aes(y = Achievement, group = 1), color = "青", size = 1.5) +
    labs(title = "実績対目標グラフ"、
         subtitle = paste("Annual Goal:", comma(annual_goal), "KRW, Annual Achievement:", comma(round(annual_achievement)), "KRW\nAchievement Rate:", round(achievement_rate, 2), "%")、
         x = "月", y = "累積売上高(KRW)") +
    scale_y_continuous(labels = カンマ, limits = c(0, max(c(annual_goal, annual_achievement))* 1.2))) + annotate(
    annotate("text", x = 12, y = max(achievements) * 1.1, label = paste("Annual Exceedance:", round(achievement_rate - 100, 2), "%"), vjust = -1, hjust = 1, color = "blue")) +
    theme_minimal()

# 追加説明

Scalesパッケージ: 数値形式と軸の設定を簡単に!

体重計 パッケージggplot2と一緒に使われ、グラフの数値形式と軸をより直感的に設定できる様々な関数を提供します。このセクションでは scales パッケージの主な機能と、このパッケージがどのように数値データをより綺麗で見やすく表現するのかについて説明します。

1.Scalesパッケージを使用する理由

一般的に、数百万単位以上の大きな数字は、コンマで区切らないと読みやすさが低下します。 特に、売上や財務データのように大きな数字が多く含まれている場合は、数字をコンマで区切って表示すると、データをより直感的に理解することができます。例えば 1000000より 1,000,000で示された数字の方が読みやすいですよね?

体重計 パッケージの コンマ() 関数は、これらの 数字の読みやすさを改善するのに大いに役立ちます。コードに コンマ()を適用すると、大きな数字が自動的にカンマで区切られて表示されます。

2.コードでの使用例

この記事で提供したサンプルコードでも 体重計 パッケージを使用して、グラフの軸とラベルをより見やすくしました。

#年間目標と実績をコンマで区切られた形式で表示する
labs(title = "Performance vs. Goal Graph"、
     subtitle = paste("Annual Goal:", comma(annual_goal), "KRW, Annual Achievement:", comma(round(annual_achievement)), "KRW\nAchievement Rate:", round(achievement_rate, 2), "%")、
     x = "月", y = "累積売上高(KRW)")

このコードでは カンマ(annual_goal)カンマ(round(annual_achievement))を使用して年間目標と実績値がカンマで区切られた形式で出力されるようにしました。

また、y軸の数字も コンマ()を使用してカンマで区切った形式で表示しました:

scale_y_continuous(labels = comma, limits = c(0, max(c(annual_goal, annual_achievement))* 1.2))

これにより、y軸に表示されるすべての数字がコンマ形式で出力され、読みやすさが大幅に向上します。

3.Scalesパッケージの利点の概要

  • 視認性の向上: 大きな数字をコンマで区切って読みやすくしてくれます。
  • コードの簡略化: コンマ() 関数一つで大きな数字のフォーマットを簡単に設定できます。
  • データ直観性の向上: 数値の形式を一貫して指定することで、データを直感的に理解することができます。

類似の投稿