2016-08-22 18 views
1
t = table(iris$Species) 
pie(t, labels=rownames(t)) 

これは簡単なpieを示しています。私はラベルがパイから少し離れていることを望んでいます。私はpar()文書をチェックしましたが、私はそれを完全に理解していないと思うので、そのオプションを逃しました。Rの円のラベルの間隔を制御しますか?

この質問はR's自身のpie()についての説明であり、他のextern Rパッケージとは関係ありません。

+0

pie関数のソースコード(RStudioの 'getAnywhere(pie())'または 'F2'を参照してください)。この関数は、ラベル付けのために 'text()'関数を使用します。 factor 1.1〜1.3のテキスト(1.1 * P $ x、1.1 * P $ y、labels [i]、xpd = TRUE、 adj = ifelse(P $ x <0,1 、0)、...) ' – Jimbou

+0

ハックは何ですか? 'ifelse(P $ x <0、1、0) ' – buhtz

+1

これはラベルのxの調整です。 'P $ x'のx値が0より小さい場合は' 1'、それ以外の場合は '0'に割り当てられます。 – Jimbou

答えて

2

実際にpie機能でこれを行うことはできません。 View(pie)を見ると、text機能を使ってラベルが描かれています。これは実際に軸ラベルではないことを意味し、parはそれにほとんど影響しません。テキスト関数の引数(例:pos = 2, offset = 1)を使用して処理を試みることもできますが、これはすべてのラベルにまったく同じ方法で影響し、警告になります。私にとっては、唯一の方法は、ラベルの前後にいくつかのスペースを追加することによって愚かなやり方だと思われる。つまり、

t = table(iris$Species) 
nms = rownames(t) 
# spaces needed after the labels 
nms[2] = paste0(nms[2], strrep(' ', 7)) 
# spaces needed before the labels 
nms[c(1, 3)] = paste0(strrep(' ', 7), nms[c(1, 3)]) 
pie(t, labels = nms) 

もっと良い解決策を望むなら、少し柔軟性のあるようにpie関数を書き直すか、別のパッケージを使うことができます。

関連する問題