मैं इस प्रश्न को तीन कारणों से खोल रहा हूं: सबसे पहले, ggplot के साथ दोहरी-अक्ष चर्चा को फिर से खोलने के लिए। दूसरा, यह पूछने के लिए कि क्या ऐसा करने के लिए एक गैर-यातनात्मक सामान्य दृष्टिकोण है। और अंत में एक काम के आसपास के संबंध में आपकी मदद के लिए पूछने के लिए।माध्यमिक/दोहरी अक्ष - ggplot
मुझे एहसास है कि एक ggplot में द्वितीयक अक्ष जोड़ने के तरीके पर कई चर्चाएं और प्रश्न हैं। उन आम तौर पर दो निष्कर्ष में से एक में अंत:
यह बुरा है, यह नहीं करते: हैडली विकहैम वही सवाल here उत्तर दिया, यह निष्कर्ष दिया कि यह संभव नहीं है। उनके पास बहुत अच्छा तर्क था कि "अलग वाई स्केल का उपयोग करके (वाई-स्केल जो एक दूसरे के परिवर्तन नहीं हैं) मूल रूप से त्रुटिपूर्ण हैं"।
आप जोर देते हैं, अपने जीवन और उपयोग ग्रिड ओवर-द जटिल हैं: उदाहरण के here के लिए और here
हालांकि, यहां कुछ स्थितियों है कि मैं अक्सर सामना करना पड़ता है, जो कर रहे हैं विज़ुअलाइजेशन दोहरी अक्ष से बहुत लाभान्वित होगा। मैंने नीचे अवधारणाओं को सारणित किया।
साजिश विस्तृत इसलिए दाईं ओर डुप्लिकेट y- अक्ष में मदद मिलेगी (या शीर्ष पर X- अक्ष) व्याख्या को कम होता है। (हम सब, उन भूखंडों जहाँ हम स्क्रीन पर एक शासक उपयोग करने की आवश्यकता में से एक भर में ठोकर खाई है, क्योंकि अक्ष बहुत दूर है)
मैं एक नया अक्ष कि एक परिवर्तन है जोड़ने की जरूरत मूल अक्षों के लिए (उदाहरण: प्रतिशत, मात्रा, ..)।
और अंत में (मैं वर्तमान में एक समस्या यह है कि के साथ नीचे प्रतिलिपि प्रस्तुत करने योग्य उदाहरण का सामना करना पड़ रहा हूँ।), जोड़ने समूहन/मेटा जानकारी: मैं जब एकाधिक स्तर के साथ स्पष्ट डेटा का उपयोग कर कि मिलती है, तो (जैसे : श्रेणियाँ = {1,2, एक्स, वाई, जेड}, जो अक्षरों और संख्याओं में "मेटा-विभाजित" हैं।) भले ही मेटा-स्तर रंग-कोडिंग और एक किंवदंती या यहां तक कि फ़ेसटिंग जोड़ने से समस्या हल हो जाए, चीजें द्वितीयक अक्ष के साथ थोड़ा सा सरल हो, जहां उपयोगकर्ता को पौराणिक कथाओं के लिए सलाखों के रंग से मिलान करने की आवश्यकता नहीं होगी।
जनरल प्रश्न: नए तानाना सुविधाओं ggplot 2.0.0 को देखते हुए, ग्रिड का उपयोग किए बिना दोहरे अक्ष के लिए एक और अधिक-मजबूत नहीं यातना तरीका है?
और एक अंतिम टिप्पणी: मैं पूरी तरह से सहमत हूं कि दोहरी अक्ष का गलत उपयोग खतरनाक रूप से भ्रामक हो सकता है ... लेकिन, क्या यह सामान्य रूप से सूचना विज़ुअलाइज़ेशन और डेटा विज्ञान के मामले में नहीं है?
काम के आसपास सवाल:
वर्तमान में, मैं (2 मामले) एक प्रतिशत अक्ष की आवश्यकता है। मैंने annotate
और geom_hline
का कामकाज के रूप में उपयोग किया। हालांकि, मैं मुख्य साजिश के बाहर पाठ को स्थानांतरित नहीं कर सकता। hjust
भी मेरे साथ काम नहीं कर रहा था।
प्रतिलिपि प्रस्तुत करने योग्य उदाहरण:
library(ggplot2)
# Random values generation - with some manipulation :
maxVal = 500
value = sample(1:maxVal, size = 100, replace = T)
value[value < 400] = value[value < 400] * 0.2
value[value > 400] = value[value > 400] * 0.9
# Data Frame prepartion :
labels = paste0(sample(letters[1:3], replace = T, size = length(value)), as.character(1:length(value)))
df = data.frame(sample = factor(labels, levels = labels), value = sort(value, decreasing = T))
# Plotting : Adding Percentages/Quantiles as lines
ggplot(data = df, aes(x = sample, y = value)) +
geom_bar(stat = "identity", fill = "grey90", aes(y = maxVal)) +
geom_bar(stat = "identity", fill = "#00bbd4") +
geom_hline(yintercept = c(0, maxVal)) + # Min and max values
geom_hline(yintercept = c(maxVal*0.25, maxVal*0.5, maxVal*0.75), alpha = 0.2) + # Marking the 25%, 50% and 75% values
annotate(geom = "text", x = rep(100,3), y = c(maxVal*0.25, maxVal*0.5, maxVal*0.75),
label = c("25%", "50%", "75%"), vjust = 0, hjust = 0.2) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
theme(panel.background = element_blank()) +
theme(plot.background = element_blank()) +
theme(plot.margin = unit(rep(2,4), units = "lines"))
आप latticeExtra इस्तेमाल कर सकते हैं यदि आप वास्तव में एक दूसरे y अक्ष – MLavoie
@MLavoie करना चाहते हैं, यह थोड़ा निराशा होती है कि एक करने के लिए जाली, इस तरह के एक सीधी-सपाट कारण के लिए ggplot से बदलेगा .. –
मुझे याद है कि हैडली ने कहीं लिखा था कि माध्यमिक धुरी जो प्राथमिक अक्षों के परिवर्तन होते हैं, स्वीकार्य होंगे और वह शायद एक पुल अनुरोध स्वीकार करेंगे जो ऐसी कार्यक्षमता को जोड़ता है। – Roland