द्वारा उत्पन्न साजिश के नीचे पाठ प्रदर्शित करना मैं ggplot2 में बनाई गई साजिश के नीचे डेटा के बारे में कुछ जानकारी प्रदर्शित करने का प्रयास कर रहा हूं। मैं प्लॉट के एक्स अक्ष समन्वय का उपयोग करके एन वैरिएबल प्लॉट करना चाहता हूं लेकिन वाई समन्वय स्क्रीन के नीचे से 10% होना चाहिए। वास्तव में, वांछित वाई निर्देशांक पहले ही डेटा फ्रेम में y_pos चर के रूप में हैं।ggplot2
1) वास्तविक भूखंड नीचे एक खाली भूखंड बनाएँ, एक ही पैमाने का उपयोग करें और उसके बाद खाली भूखंड पर डेटा प्लॉट करने के लिए geom_text का उपयोग करें:
मैं ggplot2 का उपयोग कर 3 दृष्टिकोण के बारे में सोच सकते हैं। This approach काम के प्रकार लेकिन बेहद जटिल है।
2) डेटा प्लॉट करने के लिए geom_text
का उपयोग करें, लेकिन किसी भी तरह स्क्रीन के प्रतिशत के रूप में वाई समन्वय का उपयोग करें (10%)। यह संख्याओं को साजिश के नीचे प्रदर्शित करने के लिए मजबूर करेगा। मैं उचित वाक्यविन्यास नहीं समझ सकता।
3) टेक्स्ट प्रदर्शित करने के लिए grid.text का उपयोग करें। मैं आसानी से स्क्रीन के नीचे से 10% पर सेट कर सकता हूं लेकिन मुझे यह नहीं पता कि साजिश से मेल खाने के लिए एक्स समन्वय कैसे सेट किया गया है। मैंने शुरुआती एक्स स्थिति को पकड़ने के लिए grconvert का उपयोग करने की कोशिश की लेकिन वह काम करने के लिए भी नहीं मिल सका।
graphics.off() # close graphics windows
library(car)
library(ggplot2) #load ggplot
library(gridExtra) #load Grid
library(RGraphics) # support of the "R graphics" book, on CRAN
#create dummy data
test= data.frame(
Group = c("A", "B", "A","B", "A", "B"),
x = c(1 ,1,2,2,3,3),
y = c(33,25,27,36,43,25),
n=c(71,55,65,58,65,58),
y_pos=c(9,6,9,6,9,6)
)
#create ggplot
p1 <- qplot(x, y, data=test, colour=Group) +
ylab("Mean change from baseline") +
geom_line()+
scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1)) +
opts(
legend.position=c(.1,0.9))
#display plot
p1
विषयों की संख्या के नीचे स्थित संशोधित gplot, लेकिन वे साजिश में प्रदर्शित होती हैं:
नीचे डमी डेटा के साथ मूल कथानक है। वे वाई पैमाने को विस्तारित करने के लिए मजबूर करते हैं। मैं साजिश के नीचे इन नंबरों को प्रदर्शित करना चाहता हूं।
p1 <- qplot(x, y, data=test, colour=Group) +
ylab("Mean change from baseline") +
geom_line()+
scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1)) +
opts(plot.margin = unit(c(0,2,2,1), "lines"),
legend.position=c(.1,0.9))+
geom_text(data = test,aes(x=x,y=y_pos,label=n))
p1
संख्याओं को प्रदर्शित करने का एक अलग दृष्टिकोण वास्तविक साजिश के नीचे एक डमी प्लॉट बनाना शामिल है। यहां कोड है:
graphics.off() # close graphics windows
library(car)
library(ggplot2) #load ggplot
library(gridExtra) #load Grid
library(RGraphics) # support of the "R graphics" book, on CRAN
#create dummy data
test= data.frame(
group = c("A", "B", "A","B", "A", "B"),
x = c(1 ,1,2,2,3,3),
y = c(33,25,27,36,43,25),
n=c(71,55,65,58,65,58),
y_pos=c(15,6,15,6,15,6)
)
p1 <- qplot(x, y, data=test, colour=group) +
ylab("Mean change from baseline") +
opts(plot.margin = unit(c(1,2,-1,1), "lines")) +
geom_line()+
scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1)) +
opts(legend.position="bottom",
legend.title=theme_blank(),
title.text="Line plot using GGPLOT")
p1
p2 <- qplot(x, y, data=test, geom="blank")+
ylab(" ")+
opts( plot.margin = unit(c(0,2,-2,1), "lines"),
axis.line = theme_blank(),
axis.ticks = theme_segment(colour = "white"),
axis.text.x=theme_text(angle=-90,colour="white"),
axis.text.y=theme_text(angle=-90,colour="white"),
panel.background = theme_rect(fill = "transparent",colour = NA),
panel.grid.minor = theme_blank(),
panel.grid.major = theme_blank()
)+
geom_text(data = test,aes(x=x,y=y_pos,label=n))
p2
grid.arrange(p1, p2, heights = c(8.5, 1.5), nrow=2)
enter code here
हालांकि, यह बहुत जटिल है और विभिन्न डेटा के लिए संशोधित करना मुश्किल होगा। आदर्श रूप में, मैं स्क्रीन के प्रतिशत के रूप में वाई निर्देशांक पास करने में सक्षम होना चाहता हूं। अग्रिम धन्यवाद!
annotation_custom() और कोड [यहां से] (http://stackoverflow.com/questions/9690648/point-clipped-on-x-axis-in-ggplot) आपकी मदद कर सकता है। निचे देखो। –
नीचे मेरा जवाब देखें। स्वीकार्य उत्तर से यह निश्चित रूप से सरल है। –
ggplot2 के हाल के संस्करणों में अब यह कार्यक्षमता नीचे दिए गए उत्तर के अनुसार बनाई गई है: http://stackoverflow.com/a/36036479/170352 –