2014-11-05 7 views
7

के साथ बबल चार्ट मैं आर में एक बबल चार्ट मुद्रित करना चाहता हूं। जिस समस्या में मैं दौड़ता हूं वह यह है कि, मेरे एक्स और मेरी वाई अक्ष दोनों अलग हैं। सिद्धांत रूप में इसका मतलब है कि बहुत सारे डेटा पॉइंट (बुलबुले) एक ही समन्वय पर समाप्त होते हैं। मैं उन्हें डेटा बिंदु के चारों ओर बिखरा हुआ होगा, लेकिन फिर भी एक चतुर्भुज के भीतर जो स्पष्ट करता है कि बुलबुला संबंधित एक्स/वाई समन्वय से संबंधित है।ggplot2

मुझे लगता है कि यह एक छोटे से उदाहरण द्वारा सबसे अच्छा प्रदर्शन किया जाता है। निम्नलिखित कोड समस्या पर प्रकाश डाला जाना चाहिए:

# Example 
require(ggplot2) 
zz <- textConnection("Row PowerSource ProductSegment Price Model ManufacturingLocation Quantity 
1 High SegmentA Low ModA LocationA 5000 
2 Low SegmentB Low ModB LocationB 25000 
3 High SegmentC Low ModC LocationC 15000 
4 Low SegmentD High ModD LocationD 30000 
5 High SegmentE High ModE LocationA 2500 
6 Low SegmentA Low ModF LocationB 110000 
7 High SegmentB Low ModG LocationC 20000 
8 Low SegmentC Low ModH LocationD 3500 
9 High SegmentD Low ModI LocationA 65500 
10 Low SegmentE Low ModJ LocationB 145000 
11 High SegmentA Low ModK LocationC 15000 
12 Low SegmentB Low ModL LocationD 5000 
13 High SegmentC Low ModM LocationA 26000 
14 Low SegmentD Low ModN LocationB 14000 
15 High SegmentE Mid ModO LocationC 75000 
16 Low SegmentA High ModP LocationD 33000 
17 High SegmentB Low ModQ LocationA 14000 
18 Low SegmentC Mid ModR LocationB 33000 
19 High SegmentD High ModS LocationC 95000 
20 Low SegmentE Low ModT LocationD 4000 
") 
df2 <- read.table(zz, header= TRUE) 
close(zz) 
df2 


ggplot(df2, aes(x = ManufacturingLocation, y = PowerSource, label = Model)) + 
    geom_point(aes(size = Quantity, colour = Price)) + 
    geom_text(hjust = 1, size = 2) + 
    scale_size(range = c(1,15)) + 
    theme_bw() 

मैं कैसे बुलबुले एक छोटा सा प्रत्येक श्रेणियों में विभिन्न उत्पादों और उनकी मात्रा दिखाने के लिए तितर बितर कर सकते हैं?

(क्षमा याचना, मैं नहीं एक छवि पल में क्योंकि बहुत कुछ प्रतिष्ठा का जोड़ सकते हैं)

enter image description here

+0

अपना अंतिम नोट पुन: पोस्ट पर छवि के लिए एक लिंक जोड़ें, पर्याप्त प्रतिनिधि वाले किसी व्यक्ति को वास्तविक छवि के साथ प्रतिस्थापित करने की संभावना है। – tonytonov

+0

शायद आप geom_point के बजाय geom_jitter (...) का उपयोग कर सकते हैं और ओवरलैपिंग के कारण पारदर्शिता जोड़ने के लिए अल्फा पैरामीटर का भी उपयोग कर सकते हैं। –

उत्तर

14

के रूप में टॉम Martens अल्फा का समायोजन किसी भी अतिव्यापी दिखा सकते हैं ने कहा। निम्नलिखित अल्फा स्तर:

enter image description here

बिंदु के बजाय geom_jitter का उपयोग करना, अल्फा के साथ संयुक्त:

enter image description here

:

ggplot(df2, aes(x = ManufacturingLocation, y = PowerSource, label = Model)) + 
    geom_jitter(aes(size = Quantity, colour = Price, alpha=.02)) + 
    geom_text(hjust = 1, size = 2) + 
    scale_size(range = c(1,15)) + 
    theme_bw() 

इस का उत्पादन

ggplot(df2, aes(x = ManufacturingLocation, y = PowerSource, label = Model)) + 
    geom_point(aes(size = Quantity, colour = Price, alpha=.02)) + 
    geom_text(hjust = 1, size = 2) + 
    scale_size(range = c(1,15)) + 
    theme_bw() 

में परिणाम

संपादित करें:

ggplot(df2, aes(x = ManufacturingLocation, y = PowerSource, label = Model)) + 
    geom_point(aes(size = Quantity, colour = Price),alpha=.2) + 
    geom_text(hjust = 1, size = 2) + 
    scale_size(range = c(1,15)) + 
    theme_bw() 

में जिसके परिणामस्वरूप: आदेश कथा में शिल्पकृति से बचने के लिए अल्फा एईएस बाहर रखा जाना चाहिए

enter image description here

और:

ggplot(df2, aes(x = ManufacturingLocation, y = PowerSource, label = Model)) + 
    geom_jitter(aes(size = Quantity, colour = Price),alpha=.2) + 
    geom_text(hjust = 1, size = 2) + 
    scale_size(range = c(1,15)) + 
    theme_bw() 

परिणामस्वरूप:

enter image description here

संपादित 2: तो, यह पता लगाने में कुछ समय लगा।

मैंने अपनी टिप्पणी में लिंक किए गए उदाहरण का पालन किया। मैंने आपकी जरूरतों के अनुरूप कोड समायोजित किया। सबसे पहले मैं साजिश के बाहर घबराना मूल्यों बनाया:

df2$JitCoOr <- jitter(as.numeric(factor(df2$ManufacturingLocation))) 
df2$JitCoOrPow <- jitter(as.numeric(factor(df2$PowerSource))) 

मैं तो में geom_point और geom_text एक्स उन मूल्यों को बुलाया और y के अंदर एईएस समन्वय करता है। यह बुलबुले और मिलान करने वाले लेबलों को झुकाकर काम करता था। हालांकि यह एक्स और वाई अक्ष लेबल को गड़बड़ कर दिया गया, इसलिए मैंने उन्हें स्केल_एक्स_डिस्क्रीट और स्केल_y_डिस्क्रीट में देखा जा सकता है।

ggplot(df2, aes(x = ManufacturingLocation, y = PowerSource)) + 
geom_point(data=df2,aes(x=JitCoOr, y=JitCoOrPow,size = Quantity, colour = Price), alpha=.5)+ 
geom_text(data=df2,aes(x=JitCoOr, y=JitCoOrPow,label=Model)) + 
scale_size(range = c(1,50)) + 
scale_y_discrete(breaks =1:3 , labels=c("Low","High"," "), limits = c(1, 2))+ 
scale_x_discrete(breaks =1:4 , labels=c("Location A","Location B","Location C","Location D"), limits = c(1,2,3,4))+ 
theme_bw() 

कौन इस उत्पादन देता है:

enter image description here

आप उपरोक्त scale_size के माध्यम से बुलबुले के आकार को समायोजित कर सकते हैं यहाँ साजिश कोड है। मैंने इस छवि को 1000 * 800 के आयामों के साथ निर्यात किया।

सीमाओं को जोड़ने के आपके अनुरोध के संबंध में मुझे लगता है कि यह अनावश्यक है। यह इस साजिश में बहुत स्पष्ट है जहां बुलबुले & हैं, मुझे लगता है कि सीमाएं इसे थोड़ी बदसूरत लगती हैं। हालांकि, अगर आप अभी भी सीमाएं चाहते हैं तो मुझे एक नज़र आएगी और देखें कि मैं क्या कर सकता हूं।

+0

यह लगभग सही है। क्या आप यह भी जानते हैं कि संबंधित बबल के बगल में लेबल कैसे प्राप्त करें? इसके अलावा, geom_jitter का उपयोग करने का सुझाव बिल्कुल बढ़िया है। वास्तव में क्या जरूरत थी। हालांकि, अब जब बुलबुले आखिरकार करते हैं तो वे अलग-अलग चतुर्भुजों को कैसे अलग कर सकते हैं? क्या स्थान ए/हाई, लोकेशन बी/हाई और इतने पर और आगे के आयत (या तो) को चित्रित करने का कोई तरीका है? +1 और लेबल जारी किए जाने पर स्वीकार किए जाते हैं! – Roman

+0

जैसे ही मेरे पास 15 प्रतिष्ठा है, +1 +1 देगा। क्षमा याचना। – Roman

+0

मेरे पास अभी हल करने के लिए समय नहीं है लेकिन कुछ ऐसा है: geom_text (hjust = 1, size = 3, position = position_jitter()) लेबल्स ओवरलैपिंग को रोक देगा लेकिन मुझे संदेह है कि वे बुलबुले से मेल नहीं खाएंगे। उस समस्या को हल करने के तरीके के बारे में यहां विचार करें: http://stackoverflow.com/questions/6551147/adding-text-to-ggplot-geom-jitter-points-that-match-a- शर्त मेरे पास एक होगा कल फिर देखो। – Docconcoct

 संबंधित मुद्दे