Enlace de datos : los datos utilizados
Mi 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'))
Mi resultado:
Nuevo resultado con aes (tamaño = 2):
Mi pregunta: ¿Hay alguna forma de controlar el ancho de línea con mayor precisión para evitar el resultado en el segundo gráfico? Particularmente me parece poco amigable con los documentos, y más aún para fines de publicación, incluir la trama con el ancho de línea recién definido.
mejor, ismail
Respuestas:
Mientras que @Didzis tiene la respuesta correcta , algunos puntos
La estética se puede establecer o asignar dentro de una llamada a ggplot.
A partir de los datos se asigna una estética definida dentro de aes (...) y se crea una leyenda.
Una estética también se puede establecer en un solo valor, definiéndolo fuera de aes ().
Por lo que puedo decir, lo que desea es establecer el tamaño en un solo valor, no asignar dentro de la llamada a
aes()
Cuando lo llama
aes(size = 2)
, crea una variable llamada`2`
y la usa para crear el tamaño, asignándola desde un valor constante, ya que está dentro de una llamada aaes
(por lo tanto, aparece en su leyenda).Usando size = 1 (y sin el
reg_labeller
cual quizás esté definido en algún lugar de su script)y con talla = 2
Ahora puede definir el tamaño para que funcione adecuadamente con el tamaño de imagen final y el tipo de dispositivo.
fuente
El ancho de línea en
ggplot2
se puede cambiar con el argumentosize=
engeom_line()
.fuente
aes
. Véase mi respuesta (o elggplot2
libro para una explicación.size=1
, tal vez0.5
, por lo que el usosize=1
arroja resultados bastante buenos en mi opinión. También se pueden usar números decimales para ajustar el ancho (por ejemplosize=1.2
).El ancho de línea en
ggplot2
se puede cambiar con el argumentolwd=
engeom_line()
.fuente
Si desea modificar el ancho de línea de manera flexible, puede usar "scale_size_manual", este es el mismo procedimiento para elegir el color, el relleno, el alfa, etc.
fuente
También parece que solo pones el
size
argumento en lageom_line()
parte, pero sinaes()
él se escalará adecuadamente. Al menos funciona de esta manerageom_density
y tuve el mismo problema.fuente