2012-01-05 18 views
4

我具有以下數據:我可以使R,使得圖表 - 嵌入在餅圖條形圖

I II Total 
A 15 25 40 
B 5 45 50 
C 15 5 20 

R數據輸入:

group <- c("A", "B", "C", "A", "B", "C") 
subgroup <- c("I", "I", "I", "II", "II", "II") 
yvar <- c(15, 5, 15, 25, 45, 5) 

正如我想更好的方式來呈現它,我想到了餅圖(最好是3D)和條形圖(最好是3D)的結合。這是我的想法的粗略草圖,條形圖嵌入餅圖中。如果您有任何其他創新想法來呈現此類數據,請告訴我。

enter image description here enter image description here

+0

如下卡爾答案的一部分,我一直在問我的動機這樣做。我知道餅圖不適合科學研究,但他們在商務會議中很受歡迎,我需要爲商務會議準備這樣的圖表。此外,餅圖可以演示組合(將整個部分分成類 - 這是我的意圖)。條形圖然後是每個班級內的子組合。 – SHRram 2012-01-05 12:52:48

+1

我也不會推薦製作餅圖,更不用說疊加了條形碼的餅圖。也就是說,我會採取的任何方法將覆蓋與其他任何東西將導出爲.svg文件,並將它們結合到我Inkscape(真棒免費SVG編輯器)令人愉快。 – 2012-01-07 07:58:55

回答

6

來吧,放開餡餅吧!我建議你只選擇餡餅專用解決方案 - 無論如何誰還需要條形圖。只需獲得plotrix包。這裏是我將如何以餅圖的形式顯示6個數字的矩陣。

plot(1:5,type="n",main="Pie charts are evil",xlab="",ylab="",axes=FALSE)#empty plot 
require(plotrix) 
main_col <- c("#ff0000","#80ff00","#00ffff")#nice colors 
main_pie <- floating.pie(3,3,c(40,50,20), col=main_col,radius=1)#your big pie 
#here are your small pies with labels using plotrix functions 
small_col <- c("black","white") 
small_lab <- c("I","II") 
A <- floating.pie(3.8,4.5,c(15,5), col=small_col,radius=0.2) 
pie.labels(3.8,4.5,A,small_lab,border=F,radius=0.3,cex=0.8) 
B <- floating.pie(1.7,2,c(15,25), col=small_col,radius=0.2) 
pie.labels(1.7,2,B,small_lab,border=F,radius=0.3,cex=0.8) 
C <- floating.pie(4.3,2,c(5,45), col=small_col,radius=0.2) 
pie.labels(4.3,2,C,small_lab,border=F,radius=0.3,cex=0.8) 
#and finally very useful legend 
legend("right",legend=c("A","B","C"),col=main_col,bty="n",pch=15) 

enter image description here

+0

多吃餡餅總是好事! :) – 2012-01-05 18:44:13

+2

餅圖不是邪惡的....一天一餡餅讓醫生遠離!然而,每天兩片餡餅可以讓醫生靠近...所以不要做太多! – jon 2012-01-05 20:22:38

+1

絕對!雖然有時甚至有一個蘇格蘭餡餅可以讓你... – 2012-01-05 22:04:27

10

我不能推薦足夠強烈,你讀一些愛德華·塔夫特對圖表文學和定量數據的顯示。餅圖接近將信息傳遞給用戶的最糟糕的方式。在圖表中使用「3-D」圖像(例如條形圖)被認爲是最好的 - 它不會改善可讀性或信息流。

所以,讓我問:你想給你的讀者什麼信息(和什麼結論)?你爲什麼要提交兩次相同的信息?

+0

請看我上面的評論,我把它放在那裏,以便其他同類問題的人可以問我。事實上,如果你能提出更好的辦法,就像我在問題中提到的那樣。謝謝你的答案。 – SHRram 2012-01-05 12:54:30

+0

我同意你在科學餅圖或三維圖表的基礎上,但他們有很大的價值,當涉及到業務 - 外觀fency!科學家不要讓他們的捐贈者高興嗎? – SHRram 2012-01-05 13:06:38

+0

我的確同意部分在卡爾(和愛德華Tufte的願景圖)和Ram的論點。我曾經向我的老闆呈現條形圖,但我強制製作餅圖。我認爲R社區討厭餅圖,我看不到我認爲卡爾在這裏提出的更適合評論而不是回答,這可以阻止那些想要傾聽並清楚地詢問他人的人 – jon 2012-01-05 13:38:05

8

請給我建議,如果您有任何其他的創新理念來呈現這樣的數據

我沒有一個創新的想法,但我也有我覺得有什麼更好的辦法。

想想你的數據。它分爲組(A,B,C),每個組也有一個子組(I,II)。因此,當您繪製數據時,您需要2個「視覺幫助」:其中一個顯示主要組,另一個顯示子組。

一個明智的方法是按照位置分開主要組,並按顏色指示子組。

所以,你可以重塑你的數據到數據幀(DF1),它看起來是這樣的:

group subgroup yvar 
1  A  I 15 
2  B  I 5 
3  C  I 15 
4  A  II 25 
5  B  II 45 
6  C  II 5 

然後用ggplot生成一個堆疊條形圖:

library(ggplot) 
ggplot(df1, aes(x = group, y = yvar, fill = subgroup)) + geom_bar() 

結果:

enter image description here

注意ggplot計算喲總計ü。看看這個,看看你的3D條形圖+餅圖,問自己:一眼就能看出數據的關鍵特徵是哪一種?

當我們告訴你時,請相信我和本次論壇上的數據可視化專家:重要的是清晰的表達,而不是「業務人員想要什麼」。

+2

科學地說,這是正確的答案。但是,如果老闆想要一張餅圖,那麼老闆想要一張餅圖。美國科學家有時需要擺脫我們的高馬。 – 2012-01-05 14:34:24

+2

我希望老闆想要的是良好的數據分析。有時你必須告訴人們他們並不真正想要他們想要的東西,因爲你有更好的東西。如果這是一個「高馬」,那麼足夠公平:) – neilfws 2012-01-05 14:37:24

+2

我認爲堆疊條形圖比OP想要的好,但是,我並不喜歡堆疊條形圖:)。上面的第二個(藍色)類別沒有共同的基線,因此很難看到該小組中的組之間的發展。 – 2012-01-05 14:40:52

0

你有沒有想過使用python/matplotlib?同樣自由和好,並且可以選擇(a)餅圖和(b)在其他圖上疊加圖,這些圖可以做你想做的。

http://matplotlib.sourceforge.net/gallery.html

或者你可以做一個爆炸餅圖來顯示子類別:

http://matplotlib.sourceforge.net/examples/pylab_examples/pie_demo.html

+0

R沒有任何餅圖是無稽之談。有多種方式來創建它們。 – 2012-01-05 14:39:19

+0

糟糕我的壞處。編輯。 – 2012-01-05 14:49:08

+0

漂亮的圖書館,感謝分享。 – 2012-01-05 15:01:47

1

我同意一些其他的應答者,一個餅圖可能不是繪圖本的最佳途徑數據類型。我寧願去爲每個子類別劃一條線。

「R創建餅圖」鉛的快速谷歌顯示this link as the first hit。它顯示了創建餅圖的多種選項。類似的谷歌barcharts導致this link

關於圖的組合,我會單獨創建圖並使用繪圖程序(如gimp或inkscape)將它們組合在一起。當你不想創建這種類型的地塊幾十次時,這是特別有效的。

+0

我同意,使用單獨的程序進行混搭確實會對您有好處。不是重現性的唯一原因。但它會花費你很大的努力,使你的情節不重疊,把你的標籤放在正確的地方,等等。 – alexplanation 2012-01-05 17:36:33

+0

我同意@alexplanation。手工操作需要一些時間,但在R中編程也需要一段時間... – 2012-01-05 18:44:56