2011-12-23 30 views
7

Tôi đã thử nhiều cách để có được một biểu đồ hình tròn trong ggplot2 để thay đổi chiều rộng/bán kính theo biến khác (cường độ).Biểu đồ hình tròn trong ggplot2 có kích thước bánh biến đổi

geom_bar chấp nhận chiều rộng = 0,5 làm thông số nhưng nó bị bỏ qua khi được thêm coord_polar. Adding width=0.5 đến ggplot aes hoặc thêm aes đến geom_bar không hoạt động. Tôi không thể thấy bất kỳ tùy chọn nào khác có liên quan cho coord_polar. Cách dễ nhất để làm điều này là gì? Đoạn mã dưới đây tạo ra một mạng lưới các biểu đồ hình tròn đẹp mắt nhưng không thay đổi kích thước của biểu đồ hình tròn. Tôi đang thiếu gì?

mydata <- data.frame(side1=rep(LETTERS[1:3],3,each=9),side2=rep(LETTERS[1:3],9,each=3),widget=rep(c("X","Y","Z"),9*3),val=runif(9*3),strength=rep(c(1,2,3),3,each=3)) 
ggplot(mydata, aes(x="",y = val, fill = widget, width = strength)) + 
geom_bar(position="fill") + facet_grid(side1 ~ side2) + 
coord_polar("y") + opts(axis.text.x = theme_blank()) 

Trả lời

18

Bạn có ý như thế này không?

ggplot(mydata, aes(x=strength/2, y = val, fill = widget, width = strength)) + 
    geom_bar(position="fill", stat="identity") + 
    facet_grid(side1 ~ side2) + 
    coord_polar("y") + 
    opts(axis.text.x = theme_blank()) 

enter image description here

+0

Đó chính xác là nó! Làm cho cảm giác bây giờ, các thanh phải được căn trái trong một hệ thống không cực. Tôi vẫn còn một chút không rõ ràng về lý do tại sao sức mạnh/2 là số ma thuật, nhưng sẽ phải làm một số chi tiết đọc về cách aes xử lý x giá trị trong geom_bar. – hurfdurf

Các vấn đề liên quan