2015-05-23 50 views
0

,我有以下的輸入表:繪製r中使用barplot 3個變量

city district shoptype value 
    A  A1   retail  1000 
    A  A1  restaurant 200 
    A  A2   retail 5000 
    A  A2  restaurant 600 
    B  A1   retail 2000 
    B  A1  restaurant 3000 
    B  A2   retail 400 
    B  A2  restaurant 500 

我想繪製該使用barplot:

X axis: City and District, Y axis: shoptype, size of bar: value 

我可以知道我怎麼能做到這一點?我還沒有能夠使用3個變量繪製我想要的結果...

請幫助! 謝謝!

I've created an example of my desired image

添加由早期Akrun創建數據幀代碼(感謝Akrun)

df1 <- structure(list(city = c("A", "A", "A", "A", "B", "B", "B", "B"), 
    district = c("A1", "A1", "A2", "A2", "A1", "A1", "A2", "A2"), 
    shoptype = c("retail", "restaurant", "retail", "restaurant", "retail", "restaurant", "retail", "restaurant"), 
    value = c(1000L, 200L, 5000L, 600L, 2000L, 3000L, 400L, 500L)), 
    .Names = c("city", "district", "shoptype", "value"), 
    class = "data.frame", row.names = c(NA, -8L)) 
+1

你是什麼意思 「:shoptype Y軸」 是什麼意思?你的意思是「酒吧的大小」 - 你是指寬度還是面積?你能提供你想要的輸出的圖像(使用另一個程序或字面上的繪畫和拍照),以便我們可以更好地瞭解你的想法? – Hugh

+0

我同意@Hugh的描述不夠清楚 – akrun

回答

2

嘗試是這樣的(提供d是data.frame):

library(ggplot2) 
ggplot(data=d,aes(x=paste(city,district),y=value,fill=shoptype)) + 
    geom_bar(stat="identity",position="dodge") 

gplot(data=d,aes(x=district,y=value,fill=shoptype)) + 
    geom_bar(stat="identity",position="dodge") + 
    facet_grid(. ~ city) 
0

從字面上回答你的問題,我想你想width = value作爲美學之一。

ggplot(df1, aes(x = paste0(city, district), y = shoptype, fill = paste0(city, district), width = value)) + 
geom_bar(stat = "identity", position = "dodge") 

不過,我認爲一個更明智的選擇是使用瓷磚:

ggplot(df1, 
     aes(x = paste0(city, district), 
      y = shoptype, 
      fill = paste0(city, district), 
      width = value)) + 
    geom_bar(stat = "identity", position = "dodge") 

enter image description here

+0

感謝球員們迄今爲止所提供的所有幫助,但是,這還不是我想要的。我已經創建了一個圖像,但意識到我需要10個聲望才能上傳圖片:( 基本上我想要的是接近休的答案,但x軸將包括每個區1條,並且A1和A2區將進一步按城市分組。 – rlearner

+0

mod可以上傳它。提交編輯 – Hugh

+0

我試圖編輯但我無法上傳我的圖片...對不起,打擾你們......但我怎麼上傳一張圖片請.... .... – rlearner