Programing

ggplot의 제어점 테두리 두께

crosscheck 2020. 11. 12. 07:56
반응형

ggplot의 제어점 테두리 두께


ggplot을 사용할 때 shape21-25로 설정하여 내부 ( fill) 및 테두리 ( col) 색상에 대해 독립적 인 설정을 갖는 모양을 얻을 수 있습니다 .

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21)

여기에 이미지 설명 입력

그러나 절대적으로 설정하거나 미적 매핑으로 모양 테두리의 두께를 제어하는 ​​방법을 알 수 없습니다. lwd값을 설정 하면 size미학을 덮어 씁니다 .

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)

여기에 이미지 설명 입력

테두리 두께는 어떻게 제어합니까?


ggplot2 버전 2.0.0부터 제어점 테두리 두께에 대한 인수가 있습니다. 로부터 NEWS.md파일 :

geom_point ()는 도형 21-25 (# 1133, @SeySayux)의 테두리 너비를 제어하는 ​​획 미학을 얻습니다. 크기와 스트로크는 더하기 때문에 크기가 5이고 스트로크가 5 인 포인트의 지름은 10mm입니다. (# 1142)

따라서 이에 대한 올바른 해결책은 다음과 같습니다.

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2)

산출


약간 엉망인 것처럼 느껴지지만 미적 매핑에 크기가 설정된 " 배경 "점 세트와 점 의 경계 확대하기 위한 작은 상수를 추가 할 수 있습니다 . 원하는 테두리 너비를 얻으려면 상수로 재생하십시오.

또한 그래프에 범례를 표시하지 않으려면 크기 범례를 비활성화해야합니다.

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE )+
  scale_size( guide = "none" )+
  geom_point(aes(fill=id, size=id), colour="black", shape=21)

여기에 이미지 설명 입력


또 다른 해결책은 R에서 플롯을 만든 다음 .svg 파일로 내보내는 것입니다. 그런 다음 벡터 그래픽 편집 소프트웨어 (예 : Inkscape)를 사용하여 선폭을 변경할 수 있습니다. 이 방법은 데이터 포인트가 겹칠 때 특히 유용합니다.

참고 URL : https://stackoverflow.com/questions/19506630/control-point-border-thickness-in-ggplot

반응형