मैं ggplot का उपयोग कर आर में एक स्टैक्ड बार ग्राफ प्लॉट करने की कोशिश कर रहा हूं। मैं उस टुकड़े के लिए बार के प्रत्येक टुकड़े में प्रतिशत भी शामिल करना चाहता हूं। मैंने 1, 2, 3 पदों का पालन करने का प्रयास किया लेकिन मूल्य उनके संबंधित ब्लॉक में बिल्कुल नहीं हैं। मेरा डेटा dropbox में एक फ़ाइल है।आर स्टैक्ड बार ग्राफ़ प्लॉटिंग geom_text
मेरे कोड इस प्रकार है:
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")
उत्पादन है-
किसी भी मदद की बहुत सराहना कर रहा है। आपकी मदद और समय के लिए धन्यवाद!
y मूल्य आप 'geom_text' को दे रहे हैं के बारे में सोचो। यह प्रत्येक बार सेगमेंट का _height_ है। आपको प्रत्येक बार सेगमेंट के मिडपॉइंट (या टॉप, या जो भी) की गणना करने के लिए कुछ अंकगणित करने की आवश्यकता है, इसे एक अलग चर के रूप में जोड़ें और इसे 'geom_text' में वाई चर के रूप में उपयोग करें। समारोह 'cumsum' सहायक हो सकता है। – joran
इस तरह कुछ कुछ प्रत्येक बार खंड के मध्य बिंदु पर लेबल के लिए y पदों की गणना करेगा: 'f <- ddply (f,। (फॉर्म, नमूना_नाम, नमूना_ प्रकार), परिवर्तन, pos = (cumsum (प्रतिशत) - 0.5 * प्रतिशत)) '(प्लीयर की आवश्यकता है), फिर 'geom_text' कथन होना चाहिए:' geom_text (aes (x = form, y = pos, label = प्रतिशत)) ' –