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

這會繪製一個簡單的pie。我希望標籤離派點稍遠一些。我檢查了par()文件,但我認爲我完全不理解它,因此我錯過了該選項。控制R中餅圖標籤的間隙?

這個問題是關於R自己的pie()的解釋,並且與任何其他外部R包沒有關係。

+0

請參閱RStudio中pie函數的源代碼('getAnywhere(pie())'或'F2')。該函數使用基本的'text()'函數進行標記。嘗試改變一些參數,例如將因子1.1增加到1.3「text(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) 

如果你想更好的解決方案,你可以重寫餡餅功能是一個更靈活一點,或使用不同的封裝。