2013-02-10 17 views
61

Datalink: the data usedggplot में रेखा चौड़ाई को कैसे बदलें?

मेरे कोड:

ccfsisims <- read.csv(file = "F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/GTAP-CGE/GTAP_NewAggDatabase/NewFiles/GTAP_ConsIndex.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE) 
ccfsirsts <- as.data.frame(ccfsisims) 
ccfsirsts[6:24] <- sapply(ccfsirsts[6:24],as.numeric) 
ccfsirsts <- droplevels(ccfsirsts) 
ccfsirsts <- transform(ccfsirsts,sres=factor(sres,levels=unique(sres))) 

library(ggplot2) 

#------------------------------------------------------------------------------------------ 
#### Plot of food security index for Morocco and Turkey by sector 
#------------------------------------------------------------------------------------------ 

#_Code_Begin... 

datamortur <- melt(ccfsirsts[ccfsirsts$region %in% c("TUR","MAR"), ]) # Selecting regions of interest 
datamortur1 <- datamortur[datamortur$variable %in% c("pFSI2"), ] # Selecting the food security index of interest 
datamortur2 <- datamortur1[datamortur1$sector %in% c("wht","gro","VegtFrut","osd","OthCrop","VegtOil","XPrFood"), ] # Selecting food sectors of interest 
datamortur3 <- subset(datamortur2, tradlib !="BASEDATA") # Eliminating the "BASEDATA" scenario results 

allfsi.f <- datamortur3 
fsi.wht <- allfsi.f[allfsi.f$sector %in% c("wht"), ] 

Figure29 <- ggplot(data=fsi.wht, aes(x=factor(sres),y=value,colour=factor(tradlib))) 
Figure29 + geom_line(aes(group=factor(tradlib),size=2)) + facet_grid(regionsFull~., scales="free_y", labeller=reg_labeller) + scale_colour_brewer(type = "div") + 
theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 13, hjust = 0.5, vjust = 0.5),axis.title.x=element_blank()) + 
ylab("FSI (%Change)") + theme(axis.text.y = element_text(colour = 'black', size = 12), axis.title.y = element_text(size = 12, hjust = 0.5, vjust = 0.2)) + 
theme(strip.text.y = element_text(size = 11, hjust = 0.5, vjust = 0.5, face = 'bold')) 

मेरे परिणाम: साथ एईएस (आकार = 2) Result_Figure

Newresult: NewResult-Figure

मेरा प्रश्न: वहाँ है परिणाम से बचने के लिए लाइन चौड़ाई के लिए अधिक सटीक रूप से नियंत्रित करने का एक तरीका दूसरी साजिश? मैं विशेष रूप से इसे दस्तावेज-असभ्य रूप से ढूंढता हूं, और प्रकाशन उद्देश्यों के लिए नई परिभाषित लाइन चौड़ाई के साथ साजिश को शामिल करने के लिए।

सबसे अच्छा, इस्माइल

+8

लाइन चौड़ाई बदलने के लिए, बस geom_line() में तर्क आकार = 2 जोड़ें। –

+2

बस कुछ प्रयोग किया और ऐसा लगता है कि आकार को अभिन्न मूल्यों को मानना ​​नहीं है जैसा कि आप 1 और 2 के साथ उपयोग कर रहे हैं।मैंने अभी 1.5 दर्ज किया और बीच में कुछ मिला। मुझे यकीन नहीं है कि अगर इस तरह का एक निश्चित मूल्य आपके लिए सभी परिस्थितियों में काम करेगा, लेकिन यह कम से कम ट्यून करने योग्य दिखाई देता है। – jxramos

उत्तर

77

जबकि @Didzis correct answer है, मैं कुछ बिंदुओं

पर विस्तार होगा

सौंदर्य या सेट किया जा सकता एक ggplot कॉल के भीतर मैप किया।

  • एईएस (...) के भीतर परिभाषित एक सौंदर्यशास्त्र डेटा से मैप किया गया है, और एक किंवदंती बनाई गई है।

  • एक सौंदर्यशास्त्र को भी एईएस() के बाहर परिभाषित करके एक ही मूल्य पर सेट किया जा सकता है।

जहां तक ​​मेरा बता सकते हैं, क्या आप चाहते को aes()

करने के लिए, किसी एकल मान को आकार निर्धारित नहीं नक्शा कॉल के भीतर जब आप aes(size = 2) फोन यह एक चर बुलाया बनाता है `2` और आकार बनाने के लिए इसका उपयोग करता है, इसे निरंतर मान से मैपिंग करता है क्योंकि यह aes पर कॉल के भीतर होता है (इस प्रकार यह आपके किंवदंती में दिखाई देता है)।

का उपयोग आकार = 1 (और reg_labeller जो शायद अपनी स्क्रिप्ट में कहीं परिभाषित किया गया है के बिना)

Figure29 + 
    geom_line(aes(group=factor(tradlib)),size=1) + 
    facet_grid(regionsFull~., scales="free_y") + 
    scale_colour_brewer(type = "div") + 
    theme(axis.text.x = element_text(
      colour = 'black', angle = 90, size = 13, 
      hjust = 0.5, vjust = 0.5),axis.title.x=element_blank()) + 
    ylab("FSI (%Change)") + 
    theme(axis.text.y = element_text(colour = 'black', size = 12), 
      axis.title.y = element_text(size = 12, 
      hjust = 0.5, vjust = 0.2)) + 
    theme(strip.text.y = element_text(size = 11, hjust = 0.5, 
      vjust = 0.5, face = 'bold')) 

enter image description here

और आकार के साथ = 2

Figure29 + 
    geom_line(aes(group=factor(tradlib)),size=2) + 
    facet_grid(regionsFull~., scales="free_y") + 
    scale_colour_brewer(type = "div") + 
    theme(axis.text.x = element_text(colour = 'black', angle = 90, 
      size = 13, hjust = 0.5, vjust = 
      0.5),axis.title.x=element_blank()) + 
    ylab("FSI (%Change)") + 
    theme(axis.text.y = element_text(colour = 'black', size = 12), 
      axis.title.y = element_text(size = 12, 
      hjust = 0.5, vjust = 0.2)) + 
     theme(strip.text.y = element_text(size = 11, hjust = 0.5, 
      vjust = 0.5, face = 'bold')) 

enter image description here

अब आप निश्चित कर सकते हैं ई अंतिम आकार के आकार और डिवाइस प्रकार के साथ उचित रूप से काम करने के लिए आकार।

43

ggplot2 में रेखा चौड़ाई geom_line() में तर्क size= साथ बदला जा सकता।

#sample data 
df<-data.frame(x=rnorm(100),y=rnorm(100)) 
ggplot(df,aes(x=x,y=y))+geom_line(size=2) 

enter image description here

+2

मैंने पहले से ही आपके विकल्प का प्रयास किया है, लेकिन समस्या यह है कि लाइन दस्तावेज़-अनुकूल माना जाने वाला मोटा हो गया है। एईएस (आकार) का उपयोग करते समय, मुझे दूसरा ग्राफ मिला जो मैंने जोड़ा था। मैं चौड़ाई के लिए अधिक व्यवस्थित तरीके से नियंत्रण करने में सक्षम होना चाहता हूं ताकि सर्वोत्तम फिट चुन सकें। – iouraich

+5

@ smailov83, कॉल के भीतर आकार 'एईएस' में मत डालें। मेरा उत्तर (या 'स्पष्टीकरण के लिए' ggplot2' पुस्तक देखें। – mnel

+3

डिफ़ॉल्ट मान 'आकार = 1' से कम' प्रतीत होता है, शायद '0.5', इसलिए 'आकार = 1' का उपयोग करके मेरी राय में काफी अच्छे परिणाम मिलते हैं। कोई भी चौड़ाई को ठीक करने के लिए दशमलव संख्याओं का भी उपयोग करें ('आकार = 1.2' कहें)। – Ricardo

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