Pertanyaan Bagaimana mengubah lebar garis di ggplot?


Hubungan data: data yang digunakan

Kode saya:

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

Hasil saya: Result_Figure 

Newresult with aes (size = 2): NewResult-Figure

Pertanyaan saya: Apakah ada cara untuk mengontrol lebar garis lebih tepat untuk menghindari hasil di plot kedua? Saya terutama merasa dokumennya tidak ramah, dan lebih lagi untuk tujuan penerbitan untuk menyertakan plot dengan lebar garis yang baru didefinisikan.

terbaik, ismail


75
2018-02-10 04:07


asal


Jawaban:


Sementara @Didzis memiliki jawaban yang benar, Saya akan memperluas beberapa poin

Estetika dapat diatur atau dipetakan dalam panggilan ggplot.

  • Estetika yang ditentukan dalam aes (...) dipetakan dari data, dan legenda dibuat.

  • Estetika juga dapat diatur ke nilai tunggal, dengan mendefinisikannya di luar aes ().

Sejauh yang saya tahu, apa yang Anda inginkan adalah set ukuran untuk satu nilai, bukan peta dalam panggilan ke aes()

Ketika Anda menelepon aes(size = 2) itu menciptakan variabel yang disebut `2` dan menggunakannya untuk membuat ukuran, memetakannya dari nilai konstan seperti saat panggilan dilakukan aes (dengan demikian itu muncul di legenda Anda).

Menggunakan ukuran = 1 (dan tanpa reg_labeller yang mungkin didefinisikan di suatu tempat di skrip Anda)

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

dan dengan ukuran = 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

Anda sekarang dapat menentukan ukuran agar berfungsi sesuai dengan ukuran gambar dan jenis perangkat akhir.


91
2018-02-11 00:39



Lebar garis di ggplot2 dapat diubah dengan argumen size= di 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