Ggplot में लाइन की चौड़ाई कैसे बदलें?


127

डेटा लिंक: उपयोग किए गए डेटा

मेरा कोड:

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'))

मेरा परिणाम: Result_Figure

चींटियों के साथ नया आकार (आकार = 2): NewResult-चित्रा

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

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


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

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

जवाबों:


127

जब तक @Didzis के पास सही उत्तर होगा, मैं कुछ बिंदुओं पर विस्तार करूंगा

एक 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'))

यहाँ छवि विवरण दर्ज करें

और आकार के साथ = 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'))

यहाँ छवि विवरण दर्ज करें

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


71

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

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

यहाँ छवि विवरण दर्ज करें


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

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

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

5

में लाइन चौड़ाई मेंggplot2 तर्क के साथ बदला जा सकता lwd=है geom_line()

geom_line(aes(x=..., y=..., color=...), lwd=1.5)

3

यदि आप लाइन की चौड़ाई को लचीले ढंग से संशोधित करना चाहते हैं, तो आप "scale_size_manual," का उपयोग कर सकते हैं, यह रंग, भरण, अल्फा आदि को चुनने के लिए एक ही प्रक्रिया है।

library(ggplot2)
library(tidyr)

x = seq(0,10,0.05)

df <- data.frame(A = 2 * x + 10,
                 B = x**2 - x*6,
                 C = 30 - x**1.5,
                 X = x)


df = gather(df,A,B,C,key="Model",value="Y")


ggplot( df, aes (x=X, y=Y, size=Model, colour=Model ))+
  geom_line()+
  scale_size_manual( values = c(4,2,1) ) +
  scale_color_manual( values = c("orange","red","navy") ) 

3

यह भी लगता है कि यदि आप sizeतर्क को केवल geom_line()भाग में रखते हैं, लेकिन इसके बिना aes()यह उचित रूप से पैमाना होगा। कम से कम यह इस तरह से काम करता है geom_densityऔर मुझे भी यही समस्या थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.