Datalink: os dados utilizados
Meu código:
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'))
Meu resultado:
Novo resultado com aes (tamanho = 2):
Minha pergunta: existe uma maneira de controlar a largura da linha com mais precisão para evitar o resultado no segundo gráfico? Acho particularmente não amigável para documentos e, principalmente, para fins de publicação, para incluir o gráfico com a largura de linha recém-definida.
melhor, ismail
Respostas:
Enquanto @Didzis tem a resposta correta , vou expandir alguns pontos
A estética pode ser configurada ou mapeada dentro de uma chamada ggplot.
Uma estética definida dentro de aes (...) é mapeada a partir dos dados e uma legenda é criada.
Uma estética também pode ser configurada para um único valor, definindo-a fora de aes ().
Tanto quanto posso dizer, o que você deseja é definir tamanho para um único valor, não mapear dentro da chamada para
aes()
Quando você chama,
aes(size = 2)
ela cria uma variável chamada`2`
e a usa para criar o tamanho, mapeando-a de um valor constante como dentro de uma chamada paraaes
(assim, ela aparece na sua legenda).Usando size = 1 (e sem o
reg_labeller
qual talvez seja definido em algum lugar do seu script)e com tamanho = 2
Agora você pode definir o tamanho para funcionar adequadamente com o tamanho final da imagem e o tipo de dispositivo.
fonte
A largura da linha em
ggplot2
pode ser alterada com o argumentosize=
emgeom_line()
.fonte
aes
. Veja a minha resposta (ou oggplot2
livro para uma explicação.size=1
, talvez0.5
, portanto, o usosize=1
gera bons resultados na minha opinião. Pode-se também usar números decimais para ajustar a largura (digamossize=1.2
).A largura da linha em
ggplot2
pode ser alterada com o argumentolwd=
emgeom_line()
.fonte
Se você deseja modificar a largura da linha de maneira flexível, pode usar "scale_size_manual", este é o mesmo procedimento para escolher a cor, preenchimento, alfa, etc.
fonte
Também parece que você acabou de colocar o
size
argumento nageom_line()
parte, mas semaes()
ele, ele será dimensionado adequadamente. Pelo menos funciona dessa maneirageom_density
e eu tive o mesmo problema.fonte