2017-07-27 22 views
6

में पृथक धुरी को डुप्लिकेट करना (और संशोधित करना) मैं बाईं ओर एक ggplot2 प्लॉट पर बाईं तरफ वाई-अक्ष को डुप्लिकेट करना चाहता हूं, और फिर एक अलग (स्पष्ट) अक्ष के लिए टिक लेबल बदलना चाहता हूं।ggplot2

मैं this question का जवाब पढ़ा है, हालांकि के रूप में on the package's repo page देखा जा सकता है, switch_axis_position() समारोह cowplot पैकेज से हटा दिया गया (लेखक (आगामी?) Ggplot2 में देशी कार्यक्षमता उद्धृत)।

मैंने ggplot2 में माध्यमिक अक्षों पर reference पृष्ठ देखा है, हालांकि उस दस्तावेज़ में सभी उदाहरण scale_y_discrete के बजाय उपयोग करते हैं। और, वास्तव में, जब मैं असतत समारोह इस्तेमाल करने की कोशिश, मैं त्रुटि मिलती है:

Error in discrete_scale(c("y", "ymin", "ymax", "yend"), "position_d", : 
unused argument (sec.axis = <environment>) 

वहाँ वैसे भी ggplot2 के साथ ऐसा करना है? यहां तक ​​कि एक पूरी तरह से हैक समाधान भी मेरे लिए पर्याप्त होगा। अग्रिम में धन्यवाद। (नीचे एमआरई)

library(ggplot2) 

# Working continuous plot with 2 axes 
ggplot(mtcars, aes(cyl, mpg)) + 
    geom_point() + 
    scale_y_continuous(sec.axis = sec_axis(~.+10)) 


# Working discrete plot with 1 axis 
ggplot(mtcars, aes(cyl, as.factor(mpg))) + 
    geom_point() 


# Broken discrete plot with 2 axes 
ggplot(mtcars, aes(cyl, as.factor(mpg))) + 
    geom_point() + 
    scale_y_discrete(sec.axis = sec_axis(~.+10)) 
+0

'के स्रोत को देख scale_y_discrete' माध्यमिक अक्ष निर्दिष्ट करने के लिए कोई विकल्प नहीं/तर्क नहीं है। तो किसी भी समाधान शायद एक हैक होना होगा। Ggplot मदद के अनुसार – SymbolixAU

उत्तर

6

अपना असतत कारक लें और इसे संख्यात्मक रूप से प्रस्तुत करें। फिर आप इसे दर्पण कर सकते हैं और टिकों को संख्याओं के बजाय कारक स्तर के रूप में लेबल कर सकते हैं। करने के लिए और अधिक बारीकी से डिफ़ॉल्ट असतत पैमाने नकल रूप में की जरूरत

library(ggplot2) 

irislabs1 <- levels(iris$Species) 
irislabs2 <- c("foo", "bar", "buzz") 

ggplot(iris, aes(Sepal.Length, as.numeric(Species))) + 
    geom_point() + 
    scale_y_continuous(breaks = 1:length(irislabs1), 
        labels = irislabs1, 
        sec.axis = sec_axis(~., 
             breaks = 1:length(irislabs2), 
             labels = irislabs2)) 

तो पैमाने में expand = तर्क के साथ बेला।

enter image description here

+1

"निरंतर चर के लिए डिफ़ॉल्ट सी (0.05, 0) हैं, और अलग-अलग चर के लिए सी (0, 0.6) हैं।" मेरे लिए विस्तार = सी (0,0.6) वास्तव में अच्छे परिणाम दिए – TobiO