私の目標は、ggplot2 と ggforce パッケージの組み合わせを使用して、NBA バスケットボール コートの寸法/線を描くことです。+ geom_segment() レイヤーを使用して線分 (サイドライン、フリー スロー ラインなど) を正常に描画しましたが、 + geom_circle() および + geom_arc() 関数を使用して円を描画するのに苦労しています。円弧(スリーポイントライン、ハーフコートサークルなど)
私のコードは次のとおりです。ここで、オブジェクト「サンプル」は、x 座標と y 座標を持つショットの単なるデータ フレームです。
ggplot(sample, aes(shot_x, shot_y)) +
geom_point(color = "red", alpha = .2) +
geom_segment(aes(x = 0, xend = 94, y = 0, yend = 0)) +
geom_segment(aes(x = 0, xend = 94, y = 50, yend = 50)) +
geom_segment(aes(x = 0, xend = 0, y = 0, yend = 50)) +
geom_segment(aes(x = 94, xend = 94, y = 50, yend = 0)) +
geom_segment(aes(x = 0, xend = 14, y = 3, yend = 3)) +
geom_segment(aes(x = 80, xend = 94, y = 3, yend = 3)) +
geom_segment(aes(x = 0, xend = 14, y = 47, yend = 47)) +
geom_segment(aes(x = 80, xend = 94, y = 47, yend = 47)) +
geom_segment(aes(x = 47, xend = 47, y = 0, yend = 50)) +
geom_segment(aes(x = 0, xend = 19, y = 19, yend = 19)) +
geom_segment(aes(x = 0, xend = 19, y = 31, yend = 31)) +
geom_segment(aes(x = 75, xend = 94, y = 19, yend = 19)) +
geom_segment(aes(x = 75, xend = 94, y = 31, yend = 31)) +
geom_segment(aes(x = 19, xend = 19, y = 19, yend = 31)) +
geom_segment(aes(x = 75, xend = 75, y = 19, yend = 31)) +
geom_segment(aes(x = 4, xend = 4, y = 22, yend = 28)) +
geom_segment(aes(x = 90, xend = 90, y = 22, yend = 28)) +
coord_fixed(ratio = 1)
追加すると:
+ geom_circle(aes(x0 = 47, y0 = 25, r = 6))
(ハーフコートで円を描く必要があります)、視覚化に円は表示されず、結果には最初のグラフ (ショットの線分とポイント) と、すべてのデータ ポイントの複製が含まれますが、上にオフセットされます。権利。明確にするために、エラーは発生しません。結果が意図したものではないというだけです。
また、 geom_point() レイヤーを完全に削除し、次のようなコードを開始すると:
ggplot() +
geom_segment(...)
その後、 geom_circle() レイヤーを正常に追加できます。ただし、円を追加し、データ ポイントも含める必要があります。
なぜこれが起こっているのか、または私が間違っていることは何ですか? ありがとう!