Frage Wie ändere ich die Linienstärke in ggplot?


Datenverbindung: die verwendeten Daten

Mein Code:

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

Mein Ergebnis: Result_Figure 

Newresult mit AES (Größe = 2): NewResult-Figure

Meine Frage: Gibt es eine Möglichkeit, die Linienbreite genauer zu kontrollieren, um das Ergebnis in der zweiten Kurve zu vermeiden? Ich finde es vor allem dokumentenunfreundlich, und mehr noch zu publizistischen Zwecken, um den Plot mit der neu definierten Linienbreite einzubeziehen.

Beste, Ismail


75
2018-02-10 04:07


Ursprung


Antworten:


Während @Didzis hat die korrekte AntwortIch werde auf einige Punkte eingehen

Die Ästhetik kann innerhalb eines ggplot-Aufrufs festgelegt oder zugeordnet werden.

  • Eine in aes (...) definierte Ästhetik wird aus den Daten abgebildet und eine Legende erstellt.

  • Eine Ästhetik kann auch auf einen einzelnen Wert gesetzt werden, indem sie außerhalb von aes () definiert wird.

Soweit ich sagen kann, was Sie wollen, ist zu einstellen Größe zu einem einzelnen Wert, nicht Karte innerhalb des Rufes nach aes()

Wenn du anrufst aes(size = 2) es erstellt eine Variable namens `2` und verwendet diese, um die Größe zu erstellen, indem sie von einem konstanten Wert wie in einem Aufruf auf es abgebildet wird aes (So ​​erscheint es in deiner Legende).

Mit Größe = 1 (und ohne reg_labeller was vielleicht irgendwo in deinem Skript definiert ist)

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

und mit der Größe = 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

Sie können jetzt die Größe definieren, um mit der endgültigen Bildgröße und dem Gerätetyp zu arbeiten.


91
2018-02-11 00:39



Linienbreite in ggplot2 kann mit Argument geändert werden size= im geom_line().

#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


49
2018-02-10 10:39