2012-03-22 40 views
21

Một trong những thủ thuật yêu thích của tôi trong đồ họa cơ sở là xe bán tải từ Bill Dunlap. Có thể đặt các giá trị số (hoặc bất kỳ giá trị nào) ở trên các thanh trong một cốt truyện (tôi không sử dụng nó nhưng thỉnh thoảng lại thích nó).Các giá trị chú giải trên các thanh (ggplot mặt)

mtcars2 <- mtcars[order(-mtcars$mpg), ] 
par(cex.lab=1, cex.axis=.6, 
    mar=c(6.5, 3, 2, 2) + 0.1, xpd=NA) #shrink axis text and increas bot. mar. 

barX <- barplot(mtcars2$mpg,xlab="Cars", main="MPG of Cars", 
    ylab="", names=rownames(mtcars2), mgp=c(5,1,0), 
    ylim=c(0, 35), las=2, col=mtcars2$cyl) 

mtext(side=2, text="MPG", cex=1, padj=-2.5) 
text(cex=.5, x=barX, y=mtcars2$mpg+par("cxy")[2]/2, mtcars2$hp, xpd=TRUE) 

nào mang đến cho bạn:

enter image description here

Tôi muốn để có thể làm cùng một loại chú thích với âm mưu thanh mặt trong ggplot. Rõ ràng các giá trị cũng sẽ phải bằng hai biến tương tự mà bạn đã vẽ để vẽ theo cốt truyện để bạn có thể lấy chúng bằng ftable. Tôi muốn lấy các kết quả có thể lấy được dưới đây (cho các giá trị khác 0) và đặt chúng lên trên các thanh tương ứng của chúng.

library(ggplot2) 
mtcars2 <- data.frame(id=1:nrow(mtcars), mtcars[, c(2, 8:11)]) 
mtcars2[, -1] <- lapply(mtcars2[, -1], as.factor) 

with(mtcars2, ftable(cyl, gear, am)) 

ggplot(mtcars2, aes(x=cyl)) + geom_bar() + 
    facet_grid(gear~am) 

Điều này có vẻ khá khó khăn với tôi nhưng có lẽ nó sẽ dễ dàng hơn tôi nghĩ. Cảm ơn bạn trước cho suy nghĩ về vấn đề này.

+0

Điều này có liên quan không? http://benackoverflow.com/a/9185168/1036500 – Ben

+0

@ben Tôi nghĩ bạn đang sử dụng giải pháp nhưng tôi không thể kết nối điều này với 'facet_grid' –

+0

Điều thú vị là loại ghi nhãn này được một số người cho là hiển thị khó hiểu hơn và cần tránh: http://stackoverflow.com/q/6644997/1036500 và http://stackoverflow.com/a/9318468/1036500 – Ben

Trả lời

23

Tôi có nghĩ rằng bạn chỉ muốn đếm (tức là chiều cao) của mỗi thanh khác không? Nếu vậy, bạn có thể đạt được điều đó với

ggplot(mtcars2, aes(x=cyl)) + 
    geom_bar() + 
    facet_grid(gear~am) + 
    stat_bin(geom="text", aes(label=..count.., vjust=-1)) 

nào tạo ra biểu đồ này (bạn có thể phải làm một số tinh chỉnh để có được điều đó nhãn cao nhất để hiển thị): enter image description here

count là một biến mới trong một dataframe tạo bởi stat_bin(), đó là lý do tại sao bạn phải tham chiếu nó với ..count..

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