2017-10-22 28 views
3

ggplot2で円グラフを作成しているとき、私は極座標プロットの開始の奇妙な振る舞いを見つけました。我々はgeom_point geom_polarの開始時にシフトを導入pie(ドーナツ)chart

dta <- data.frame(val = 1:60, col = rep(c(0,1), each = 10)) 

を取ると、

library(ggplot2) 
ggplot(dta, aes(x = val, y = 2, fill = factor(col), color = factor(col))) + 
    geom_col() + 
    coord_polar(start = 0) 

を使用して円グラフを作成する場合は、我々が期待通りに円グラフで終わる: enter image description here

言って、私たちは中に小さなドーナツの穴を作成したいですグラフの真ん中には、中央にポイントを追加することで達成できます。

ggplot(dta, aes(x = val, y = 2, fill = factor(col), color = factor(col))) + 
    geom_col() + 
    coord_polar(start = 0) + 
    geom_point(aes(0,0), size = 30, color = "lightgrey", show.legend = FALSE) 

しかし、この点では、円グラフの先頭が奇妙に移動し、その結果、上部に小さなグレーのセクタが表示されます。

enter image description here

なぜこのシフトが生じて?どのように避けることができますか? Btw。このシフトは、geom_vline(xintercept = 0)のような他のギオムによっても導入されます。

答えて

4

シフトは?scale_x_continuous()のようになります。そのexpand引数は、 "デフォルトはc(0.05、0)連続変数、c(0、0.6)は離散変数です。"

あなたはそのギャップを解消したいのであれば、あなたはscale_x_continuousがそこに巻き込ま防ぐためにaes()の外にあなたのgeom_point()層を定義することができます。

ggplot(dta, aes(x = val, y = 2, fill = factor(col), color = factor(col))) + 
    geom_col() + 
    coord_polar(start = 0) + 
    geom_point(x = 0, y = 0, size = 30, color = "lightgrey", show.legend = FALSE) 

enter image description here

それともexpand引数に渡された値を微調整:

ggplot(dta, aes(x = val, y = 2, fill = factor(col), color = factor(col))) + 
    geom_col() + 
    coord_polar(start = 0) + 
    geom_point(aes(0,0), size = 15, color = "lightgrey", show.legend = FALSE) + 
    scale_x_continuous(expand = c(0,-.25)) 

なぜわからないのですかc(0,0)は、(この作品、なぜ再びわからない、coord_polar()は気難しいやつです)我々は上記の戦略のいずれかに、geom_vline(xintercept = .5)を追加し、取得することができます... geom_vline()ケースでは

enter image description here

を所望の出力を得られません適切に配置された縦線:

ggplot(dta, aes(x = val, y = 2, fill = factor(col), color = factor(col))) + 
    geom_col() + 
    coord_polar(start = 0) + 
    geom_point(x = 0, y = 0, size = 30, color = "lightgrey", show.legend = FALSE) + 
    geom_vline(xintercept = .5) 

enter image description here

私は最初の戦略は、第2のAP以来、優れていると思います色の境界線(とvライン)を「真の」垂直線からぴったりと傾けています。小さなプレビューウィンドウの最初のパスでは見えませんでした。

+0

ありがとうございました。しかし、別の 'geom_vline'を使用します。これはエラーの原因にもなります。 'geom_vline'に最初の解決策を適用する方法を知っていますか? – loki

+0

あなたは 'geom_vline()'にどのパラメータを渡していますか? – Nate

+0

'geom_vline(xintercept = 0)' – loki

関連する問題