उदाहरण के लिए, अंक के एक ggplot को देखते हुए, आप डेटा की पंक्ति कैसे प्राप्त करेंगे जो किसी दिए गए बिंदु से मेल खाता है?आप ggplot2 grobs को डेटा पर वापस कैसे जोड़ते हैं?
एक नमूना साजिश:
library(ggplot2)
(p <- ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
facet_wrap(~ gear)
)
हम grobs कि grid.ls
+ grid.get
साथ अंक शामिल हो सकता है।
grob_names <- grid.ls(print = FALSE)$name
point_grob_names <- grob_names[grepl("point", grob_names)]
point_grobs <- lapply(point_grob_names, grid.get)
यह पिछले चर x-y निर्देशांक का विवरण, और pointsize, आदि (unclass(point_grobs[[1]])
कोशिश) शामिल हैं, लेकिन यह स्पष्ट नहीं है कि कैसे मैं mtcars
में डेटा की पंक्ति है कि प्रत्येक बिंदु से मेल खाती है मिलता है।
कारण है कि मैं यह कर रहा हूं, मैं एक इंटरैक्टिव scatterplot बनाने के लिए gridSVG
उपयोग कर रहा हूँ के बारे में kohske के सवाल का जवाब करने के लिए। जब आप माउस को एक बिंदु पर रोल करते हैं, तो मैं प्रासंगिक जानकारी प्रदर्शित करना चाहता हूं। Mtcars उदाहरण में, मैं डेटा फ्रेम के उस पंक्ति से कार या अन्य मानों के नाम के साथ टूलटिप दिखा सकता हूं।
mtcars$id <- seq_len(nrow(mtcars))
p + geom_text(aes(label = id), colour = NA)
तब पाठ Grob इंगित Grob से grobs के वृक्ष पार, और डाटासेट की पंक्ति प्रदर्शित:
मेरे hacky विचार अब तक एक अदृश्य पाठ लेबल के रूप में एक id
कॉलम शामिल करने के लिए है लेबल द्वारा अनुक्रमित।
यह बेहद सामान्य और बहुत सामान्य नहीं है। यदि बिंदु grob के भीतर id
मान को स्टोर करने का कोई तरीका है, तो यह बहुत साफ होगा।
कोई आसान तरीका नहीं है। आपका अंतिम लक्ष्य क्या है? विकल्प हो सकते हैं। – kohske
@ कोहस्के: एक टिप्पणी के लिए बहुत लंबा, इसलिए मैंने यह प्रश्न समझाया कि मैं क्या कर रहा हूं। –
बहुत दिलचस्प है। मैं आपका उद्देश्य समझता हूं। दुर्भाग्य से हमारे पास ग्रोब के माध्यम से डेटा तक पहुंचने का कोई तरीका नहीं है (यहां तक कि अगली रिलीज में भी, शायद)। लेकिन शायद डेटा के बारे में जानकारी रखना उपयोगी होगा (विशेष रूप से जब 'stat = "पहचान")। में चर्चा करूंगा। – kohske