2013-04-05 15 views
15

जीएनयू आर का उपयोग करके एक स्पष्ट बबल प्लॉट कैसे बनाएं, जैसा कि व्यवस्थित मैपिंग अध्ययनों में उपयोग किया गया है (नीचे देखें)?मैपिंग अध्ययन के लिए स्पष्ट बबल प्लॉट

categorical bubble plot used in mapping studies

संपादित करें: ठीक है, यहाँ क्या मैं अब तक की कोशिश की है है। , तब

> grid 
         Var1      Var2 count 
1    Does.Not.apply   Does.Not.apply 53 
2    Not.specified   Does.Not.apply 15 
3 Active.Learning..general.   Does.Not.apply  1 
4  Problem.based.Learning   Does.Not.apply  2 
5    Project.Method   Does.Not.apply  4 
6   Case.based.Learning   Does.Not.apply 22 
7    Peer.Learning   Does.Not.apply  6 
10      Other   Does.Not.apply  1 
11    Does.Not.apply    Not.specified 15 
12    Not.specified    Not.specified 15 
21    Does.Not.apply Active.Learning..general.  1 
23 Active.Learning..general. Active.Learning..general.  1 
31    Does.Not.apply Problem.based.Learning  2 
34  Problem.based.Learning Problem.based.Learning  2 
41    Does.Not.apply   Project.Method  4 
45    Project.Method   Project.Method  4 
51    Does.Not.apply  Case.based.Learning 22 
56  Case.based.Learning  Case.based.Learning 22 
61    Does.Not.apply    Peer.Learning  6 
67    Peer.Learning    Peer.Learning  6 
91    Does.Not.apply      Other  1 
100      Other      Other  1 

डेटा प्लॉट करने की कोशिश कर:: सबसे पहले, मेरी डाटासेट (var1 x- अक्ष को जाता है, var2 y- अक्ष को जाता है)

# Based on http://flowingdata.com/2010/11/23/how-to-make-bubble-charts/ 
grid <- subset(grid, count > 0) 
radius <- sqrt(grid$count/pi) 
symbols(grid$Var1, grid$Var2, radius, inches=0.30, xlab="Research type", ylab="Research area") 
text(grid$Var1, grid$Var2, grid$count, cex=0.5) 

यहाँ परिणाम है: What I've got

समस्याएं: धुरी लेबल गलत हैं, धराशायी ग्रिड लाइनें गायब हैं।

+1

स्टैक ओवरफ्लो में आपका स्वागत है। आपको कई डाउनवॉट मिल रहे हैं क्योंकि आपने डेटा सेट या आपके द्वारा किए गए किसी भी कोड को प्रदान नहीं किया है। अपना प्रश्न कैसे सेट अप करें इस बारे में अधिक जानकारी के लिए यह [LINK] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) देखें। –

+5

डाउनवॉटर के लिए मैं समझ सकता हूं कि आपने क्यों गिराया लेकिन लोगों को यह बताने के लिए समय दें कि क्यों। रॉड्रिगॉर्ग्स पहली बार पोस्टर है और एसओ के मानदंड नहीं प्राप्त करता है। यदि आप डब्ल्यू/ओ समझाते हैं, तो यह कोई उद्देश्य नहीं देता है बल्कि हमें एक बुरी प्रतिष्ठा देता है। –

+1

हाय @rodrigorgs, टायलर की टिप्पणी गूंजने के लिए। यदि आप कुछ नमूना डेटा प्रदान कर सकते हैं, तो आपको सहायक उत्तर पाने की अधिक संभावना है। (आप या तो डेटा के लिए एक लिंक पोस्ट कर सकते हैं, या आप अपने प्रश्न के शरीर में एक छोटा सा नमूना पेस्ट कर सकते हैं।कृपया इसे टिप्पणियों में न रखें) –

उत्तर

11

यहां ggplot2 समाधान है। सबसे पहले, आपके डेटा फ्रेम में नए चर के रूप में त्रिज्या जोड़ा गया।

grid$radius <- sqrt(grid$count/pi) 

आपको साजिश के अंदर बिंदुओं और पाठ लेबल के आकार के साथ सही फिट करने के लिए खेलना चाहिए।

library(ggplot2) 
ggplot(grid,aes(Var1,Var2))+ 
    geom_point(aes(size=radius*7.5),shape=21,fill="white")+ 
    geom_text(aes(label=count),size=4)+ 
    scale_size_identity()+ 
    theme(panel.grid.major=element_line(linetype=2,color="black"), 
     axis.text.x=element_text(angle=90,hjust=1,vjust=0)) 

enter image description here

+1

+1 बहुत अच्छा है! मूल छवि में एक छोटी बूंद छाया के बारे में कैसे: 'geom_point (aes (आकार = त्रिज्या * 7.8), स्थिति = position_dodge (चौड़ाई = .05), आकार = 21, भरें =" # 333333 ", रंग =" # 99 99 99 ") +' –

+0

बढ़िया! मुझे ggplot2 सीखना चाहिए। – rodrigorgs

1

यह आपको अपने एक्सएक्सिस पर टिक अंक जोड़कर शुरू कर देगा।

सबसेट के लिए लाइनों को जोड़ने के लिए, बस प्रत्येक स्तर

ggs <- subset(gg, count > 0) 
radius <- sqrt(ggs$count/pi) 

# ggs$Var1 <- as.character(ggs$Var1) 

# set up your tick marks 
# (this can all be put into a single line in `axis`, but it's placed separate here to be more readable) 
#-------------- 
# at which values to place the x tick marks 
x_at <- seq_along(levels(gg$Var1)) 
# the string to place at each tick mark 
x_labels <- levels(gg$Var1) 


# use xaxt="n" to supress the standard axis ticks 
symbols(ggs$Var1, ggs$Var2, radius, inches=0.30, xlab="Research type", ylab="Research area", xaxt="n") 
axis(side=1, at=x_at, labels=x_labels) 

text(ggs$Var1, ggs$Var2, ggs$count, cex=0.5) 

भी सूचना है कि बजाय वस्तु grid बुलाने की मैं इसे gg कहा जाता है पर एक पंक्ति जोड़ें, और उसके बाद ggsgridR में एक फ़ंक्शन है। हालांकि किसी ऑब्जेक्ट के साथ फ़ंक्शन को ओवरराइट करने की "अनुमति" है, लेकिन इसकी अनुशंसा नहीं की जाती है और लाइन के नीचे कष्टप्रद बग का कारण बन सकती है।

2

यहाँ एक संस्करण latticeExtra से levelplot का उपयोग कर।

library(latticeExtra) 
levelplot(count~Var1*Var2,data=dat, 
      panel=function(x,y,z,...) 
      { 
      panel.abline(h=x,v=y,lty=2) 
      cex <- scale(z)*3 
      panel.levelplot.points(x,y,z,...,cex=5) 
      panel.text(x,y,label=z,cex=0.8) 
      },scales=(x=list(abbreviate=TRUE))) ## to get short labels 

enter image description here

गिनती के लिए बुलबुला proprtional के आकार पाने के लिए आपको के बाद से प्रस्तुत करना दुविधा में के रूप में स्पष्ट नहीं है इस

library(latticeExtra) 
levelplot(count~Var1*Var2,data=dat, 
      panel=function(x,y,z,...) 
      { 
      panel.abline(h=x,v=y,lty=2) 
      cex <- scale(z)*3 
      panel.levelplot.points(x,y,z,...,cex=5) 
      panel.text(x,y,label=z,cex=0.8) 

      }) 

मैं इसे प्रदर्शित नहीं करते क्या कर सकते हैं आकार का मामला

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