Tôi đang cố vẽ đồ thị thanh xếp chồng lên nhau trong R bằng ggplot. Tôi cũng muốn bao gồm tỷ lệ phần trăm trong mỗi phần của thanh cho phần đó. Tôi đã cố gắng theo dõi các bài đăng 1, 2, 3 nhưng các giá trị không chính xác trong các khối tương ứng của chúng. Dữ liệu của tôi là một tệp trong dropbox.R biểu đồ thanh xếp chồng lên nhau vẽ sơ đồ geom_text
Mã của tôi là như sau:
f<-read.table("Input.txt", sep="\t", header=TRUE)
ggplot(data=f, aes(x=Form, y=Percentage, fill=Position)) +
geom_bar(stat="identity", colour="black") +
geom_text(position="stack", aes(x=Form, y=Percentage, ymax=Percentage, label=Percentage, hjust=0.5)) +
facet_grid(Sample_name ~ Sample_type, scales="free", space="free") +
opts(title = "Input_profile",
axis.text.x = theme_text(angle = 90, hjust = 1, size = 8, colour = "grey50"),
plot.title = theme_text(face="bold", size=11),
axis.title.x = theme_text(face="bold", size=9),
axis.title.y = theme_text(face="bold", size=9, angle=90),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank()) +
scale_fill_hue(c=45, l=80)
ggsave("Output.pdf")
Sản lượng là-
Any help is appreciated rất nhiều. Cảm ơn sự giúp đỡ và thời gian của bạn!
Hãy nghĩ về những giá trị y bạn đang đem lại cho 'geom_text'. Đây là _height_ của mỗi đoạn thanh. Bạn cần phải thực hiện một số phép tính để tính điểm giữa (hoặc trên cùng hoặc bất kỳ phần nào) của mỗi đoạn thanh, thêm nó như là một biến riêng biệt và sử dụng nó làm biến y trong 'geom_text'. Hàm 'cumsum' có thể hữu ích. – joran
Một cái gì đó như thế này sẽ tính toán vị trí y cho các nhãn ở trung điểm của mỗi đoạn thanh: 'f <- ddply (f,. (Mẫu, Sample_name, Sample_type), biến đổi, pos = (cumsum (Tỷ lệ phần trăm) - 0,5 * Tỷ lệ phần trăm)) '(yêu cầu plyr), sau đó câu lệnh' geom_text' phải là: 'geom_text (aes (x = Biểu mẫu, y = pos, nhãn = Tỷ lệ phần trăm))' –