source

ggplot에서 선 너비를 변경하는 방법은 무엇입니까?

manycodes 2023. 6. 6. 00:08
반응형

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

결과:결과_그림

aes(크기=2)를 포함한 새로운 결과:새 결과-그림

내 질문:두 번째 그래프에서 결과를 피하기 위해 선 너비를 보다 정확하게 제어할 수 있는 방법이 있습니까?저는 특히 새로 정의된 선폭을 가진 플롯을 포함하는 것이 문서화되어 있지 않다고 생각합니다.

최고, ismail

@Didzis가 정답을 말하는 동안, 몇 가지 사항에 대해 설명하겠습니다.

미학은 ggplot 호출 내에서 설정하거나 매핑할 수 있습니다.

  • 데이터에서 aes(...) 내에 정의된 미학이 매핑되고 범례가 생성됩니다.

  • 미적 요소는 aes() 외부에서 정의하여 단일 값으로 설정할 수도 있습니다.

제가 알기로는, 당신이 원하는 것은 크기를 단일 값으로 설정하는 이지, 통화 내에서 매핑하는 이 아닙니다.aes()

전화할 때aes(size = 2)다음과 같은 변수를 생성합니다.`2`그리고 그것을 크기를 만들기 위해 사용하고, 그것이 통화 내에 있는 것처럼 일정한 값으로부터 그것을 매핑합니다.aes(범례에 나타나는 경우).

크기 = 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'))

여기에 이미지 설명 입력

사이즈 = 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'))

여기에 이미지 설명 입력

이제 최종 이미지 크기 및 장치 유형에 적합한 크기를 정의할 수 있습니다.

선 너비:ggplot2인수로 변경할 수 있습니다.size=geom_line().

#sample data
df<-data.frame(x=rnorm(100),y=rnorm(100))
ggplot(df,aes(x=x,y=y))+geom_line(size=2)

여기에 이미지 설명 입력

선 너비:ggplot2인수로 변경할 수 있습니다.lwd=geom_line().

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

그것은 또한 당신이 그냥 그것을 놓는 것처럼 보입니다.size의 논쟁.geom_line()양을 제외하고는aes()적절히 확장할 수 있습니다.적어도 이런 식으로 작동합니다.geom_density그리고 저도 같은 문제를 겪었습니다.

선폭을 유연하게 수정하려면 "scale_size_manual"을 사용할 수 있습니다. 이것은 색상, 채우기, 알파 등을 선택하는 것과 동일한 절차입니다.

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 = 1.5)을 사용하여 aes() 함수 외부에 size 명령을 추가하기만 하면 됩니다.

geom_line(data,aes(x=x,y=y), size=1.5)

ggplot23.4.0 이후. 사용linewidth.

예:

geom_line(aes(group=factor(tradlib)), linewidth=0.2)

언급URL : https://stackoverflow.com/questions/14794599/how-to-change-line-width-in-ggplot

반응형