R 산점도에서 점의 크기를 제어 하시겠습니까?


116

R에서 plot()함수는 pch플롯의 점 모양을 제어 하는 인수를 사용합니다. 저는 수만 개의 점으로 산점도를 만들고 있으며 작지만 너무 작은 점은 선호하지 않습니다. 기본적으로 나는 pch='.'너무 작지만 pch=19너무 뚱뚱 하다는 것을 알게 됩니다 . 중간에 무언가가 있거나 어떻게 든 점을 축소하는 방법이 있습니까?


점을 더 작게 만드는 것보다 100 개의 임의 데이터 포인트가 1000 개보다 더 쉽게 볼 수 있다고 플롯하는 방법이 있습니까?
user2363642

많은 작은 포인트의 경우 알파 (투명도)를 사용하면 더 적은 수의 포인트를 사용하는 것보다 산점도를 훨씬 더 유익하게 만들 수 있습니다.

1
나는 사용하지 않는 것이 좋습니다 pch='.'. 출처 : 저는 pch='.'자주 사용
했었습니다

@geneorama ·대신 사용을 의미 .합니까?
nanaki

@nanaki는 다소 이상하지만 R에서 사용할 때 기호가 작은 상자로 표시됩니다. 아래 답변은 올바른 접근 방식을 설명하는 데 효과적입니다.
geneorama

답변:


100

cex인수를 시도하십시오 .

?par

  • cex
    플로팅 텍스트 및 기호가 기본값에 비해 확대되어야하는 양을 제공하는 숫자 값입니다. plot.default와 같은 일부 그래픽 함수에는이 그래픽 매개 변수를 곱하는이 이름의 인수가 있으며 포인트와 같은 일부 함수는 재활용되는 값의 벡터를 허용합니다. 다른 용도는 길이가 1보다 큰 벡터가 제공되는 경우 첫 번째 값만 사용합니다.

15
다른 옵션이 없으면 기호 크기를 제어하기 위해 'cex'를 사용하지 않을 것이라고 생각합니다. 일부 시간에만 작동합니다. 규칙은 'par'를 통해 'cex'를 설정하면 플롯의 (대부분) 텍스트 크기에 영향을 미치고 'plot'내부에 설정하면 'cex'는 기호 크기에만 영향을 미친다는 것입니다. 따라서 해당 규칙을 잘못 적용하면 기호 크기가 변경되지 않을뿐만 아니라 텍스트 크기에 영향을주는 여러 매개 변수가 있습니다 (cex.axis, cex.lab, cex.main 및 cex.sub-모두 동일하게 수행) 'cex'로 작업, 부분적으로 만). 이와 같은 코드는 유지하고 확장하기가 어렵습니다.
doug

5
동의하다. cex전체적으로 설정하면 par그림 여백을 포함하여 수정해야하는 모든 종류의 항목이 변경됩니다. 그러나 cex내 설정 은 plot작동하는 것 같습니다.
운항

doug의 의견에 의해 위에서지지 한 조언은 반드시 틀린 것은 아니지만 cex플롯 할 때 인수 를 사용하는 데 잠재적 인 문제를 상당히 과장합니다 . 유용하고 최상의 옵션 인 경우가 많이 있습니다.
joran

lwdpch의 선 너비를 제어합니다 (예 : plot(1:5, pch=1:5, col=1:5, lwd=1:5). 감사합니다 sthda.com/english/wiki/…
geneorama

95

pch = 20 은 "." 사이 크기의 기호를 리턴합니다 . 및 19.

그것은의 작성 (당신이 원하는 아마 인) 기호.

그 외에도 R의 기본 그래픽 시스템에서도 사용자가 기호 크기, 색상 및 모양을 세밀하게 제어 할 수 있습니다. 예 :

dfx = data.frame(ev1=1:10, ev2=sample(10:99, 10), ev3=10:1)

with(dfx, symbols(x=ev1, y=ev2, circles=ev3, inches=1/3,
                  ann=F, bg="steelblue2", fg=NULL))

그래프 예


나는이 플롯을 좋아하지만 반경이 그 지점에 대한 관측 수와 같기를 원합니다. 어떻게하는지 보여줄 수 있습니까?
Derk Arts 2013-04-17

pi*R^2(표면)은 관측 횟수에 비례해야합니다.
SESman

5
@saratis 이것은 당신이 원하는 것을 할 것입니다 :symbols(x=dfx$ev1, y=dfx$ev2, circles=sqrt(dfx$ev3/pi), inches=1/3, ann=F, bg="steelblue2", fg=NULL)
fmark nov.

1
이것을 사용하여 동일한 그래프에 여러 시리즈를 그리는 방법에 대한 아이디어가 있습니까? 즉, "points (x = dfx2 $ ev1, y = dfx2 $ ev2, circle = dfx2 $ ev3, ...)"가 작동하지 않습니다.
Neodyme

"인치가 무엇입니까?"가 궁금한 경우 여기에서 볼
MichaelChirico

22

으로 RCS는 진술, cex기본 그래픽 패키지의 일을 할 것입니다. 나는 당신이 당신의 그래프를 할 생각하지 않은 것을 이해 할수 ggplot2있지만, 당신이 경우에, 거기에 size쉽게 (제어 할 수, 미적 특성을 ggplot2사용자 친화적 인 기능의 인수가 : 입력하는 대신 cex(문자 확장)에 ggplot2입력 예 수 size = 2와 2mm 포인트를 얻을 수 있습니다).

예는 다음과 같습니다.

### base graphics ###
plot(mpg ~ hp, data = mtcars, pch = 16, cex = .9)

### ggplot2 ###
# with qplot()
qplot(mpg, hp, data = mtcars, size = I(2))
# or with ggplot() + geom_point()
ggplot(mtcars, aes(mpg, hp), size = 2) + geom_point()
# or another solution:
ggplot(mtcars, aes(mpg, hp)) + geom_point(size = 2)

4
그리고 실제로 수만 개의 포인트를 플로팅하는 경우 ggplot2에는 알파 조정, 16 진수 빈, 등고선 플롯 등 여러 가지 다른 방법이 있습니다. ggplot2 책의 72-77 페이지를 확인하십시오. 도서관에서 또는 도서관에서 Springer 책에 대한 전자 액세스 권한이있는 경우 (대부분의 R 책이 거기에 있다고 생각합니다).
Matt Parker

예 ... 저는 특히 alpha산점도에서 과도 함을 피하기 위해 사용 합니다.
aL3xa 2010

@ aL3xa 기본 그래픽 패키지에서 알파 를 사용할 수 있습니다 . 예를 들어 col = rgb(0, 0, 0, 0.6)플롯 옵션에 추가하십시오 .
RobJan 19
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.