如何更改 ggplot 中的行宽?

资料链接: 使用的资料

我的代码:

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-Figure

我的问题是: 有没有一种方法可以更精确地控制线宽以避免在第二个图中出现结果?我特别发现它对文档不友好,而且出于发布的目的,在新定义的线宽中包含了情节。

最好, Ismail

498849 次浏览

ggplot2中的线宽可以通过 geom_line()中的参数 size=来改变。

#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

虽然@Didzis 拥有 正确答案,我将在几个点上展开

可以在 ggplot 调用中设置或映射美学。

  • 在 aes (...)中定义的审美是从数据映射的,并且创建了一个图例。

  • 通过在 aes ()之外定义审美,也可以将其设置为单个值。

据我所知,您想要的是将 准备好了的大小设置为单个值,而不是调用 aes()时的 地图

当您调用 aes(size = 2)时,它会创建一个名为 `2`的变量,并使用该变量创建大小,将它从一个常量值映射到 aes(因此它出现在您的图例中)。

使用 size = 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'))

enter image description here

尺寸 = 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

现在可以定义适合最终图像大小和设备类型的大小。

如果您想灵活地修改线宽,您可以使用“ scale _ size _ Manual”,这是选择颜色、填充、 alpha 等的相同过程。

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


它看起来也像是如果你只是把 size参数放在 geom_line()部分,但是没有 aes(),它就会适当地缩放。至少 geom_density是这样工作的,我也有同样的问题。

ggplot2中的线宽可以通过 geom_line()中的参数 lwd=来改变。

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