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


127

데이터 링크 : 사용 된 데이터

내 코드 :

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 (size = 2)를 사용한 새로운 결과 : NewResult- 그림

내 질문 : 두 번째 플롯의 결과를 피하기 위해 선 너비를 더 정확하게 제어하는 ​​방법이 있습니까? 나는 특히 문서에 비우호적이며 게시 목적으로 새로 정의 된 선 너비로 플롯을 포함하는 것이 더 좋습니다.

최고, ismail


9
선 너비를 변경하려면 geom_line ()에 size = 2 인수를 추가하면됩니다.
Didzis Elferts 2013

3
몇 가지 실험을했고 1과 2를 사용하는 것처럼 크기가 정수 값을 가정 할 필요가없는 것처럼 보입니다. 방금 1.5를 입력했고 그 사이에 뭔가를 얻었습니다. 그와 같은 고정 값이 모든 상황에서 작동하는지 확실하지 않지만 적어도 조정 가능한 것처럼 보입니다.
jxramos 2014 년

답변:


127

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

여기에 이미지 설명 입력

이제 최종 이미지 크기 및 장치 유형에 적절하게 작동하도록 크기를 정의 할 수 있습니다.


71

의 선 폭은 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)

여기에 이미지 설명 입력


2
나는 이미 귀하의 옵션을 시도했지만 문제는 문서 친화적으로 간주 되기에는 선이 너무 두꺼워진다는 것입니다. aes (size)를 사용하면 추가 한 두 번째 그래프를 얻습니다. 가장 잘 맞는 것을 선택할 수 있도록보다 체계적으로 너비를 제어 할 수 있기를 바랍니다.
iouraich 2013

8
@ smailov83, 호출에 크기를 넣지 마십시오 aes. 내 대답 (또는 ggplot2설명에 대한 책을 참조하십시오 .
mnel

6
기본값은 size=1아마도 보다 작은 것 0.5같으므로 사용 size=1하면 내 의견으로는 꽤 좋은 결과 를 얻을 수 있습니다. 십진수를 사용하여 너비를 미세 조정할 수도 있습니다 (예 :) size=1.2.
Ricardo

5

의 선 폭은 ggplot2인수로 변경할 수 있습니다 lwd=에서 geom_line().

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

3

선 너비를 유연하게 수정하려면 "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") ) 

3

또한 size인수를 geom_line()부분 에 넣으면 aes()적절하게 확장 되는 것처럼 보입니다 . 적어도 이런 식으로 작동 geom_density하고 동일한 문제가 발생했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.