그래프 > 3D 그래프 > 그래프를 파일로 저장하기
Graphs > 3D graph > Save graph to file

Linux 사례 (MX 21)
Linux 사례 (MX 21)

carData 패키지에서 제공하는 Prestige 데이터셋을 활용하여 만든 3차원 산점도이다. 위와 같이 3차원 그래프를 만들었다면, <그래프를 파일로 저장하기> 기능이 활성화될 것이다. 이 기능을 선택하면, 아래와 같이 저장경로와 추천하는 파일이름과 형식이 제공된다.

Linux 사례 (MX 21)
rgl.snapshot("/home/jhshin/RGLGraph_추가이름1.png")

'Graphs > 3D graph' 카테고리의 다른 글

2. Identify observations with mouse  (0) 2022.03.06
1. 3D scatterplot  (0) 2022.03.06

마우스로 관찰치 식별하기

Graphs > 3D graph > Identify observations with mouse

Linux 사례 (MX 21)

 

Linux 사례 (MX 21)

'Graphs > 3D graph' 카테고리의 다른 글

3. Save graph to file  (0) 2022.03.07
1. 3D scatterplot  (0) 2022.03.06

3차원 산점도...

Graphs > 3D graph > 3D scatterplot

Linux 사례 (MX 21)

carData 패키지에 있는 Prestige 데이터셋을 활성화시키자. 교육연수와 연소득이 직업의 사회적 권위에 미치는 영향을 점검한다고 생각하자. <설명 변수 (두개 선택)>에 education, income을 <반응 변수 (한개 선택)>에 prestige 변수를 선택한다.

Linux 사례 (MX 21)

<선택기능> 창에서 '축(axis) 규모 보이기', '표면 그리드 선 보이기'를 선택하고, <표면 적합화 방법>에서 '평활 회귀'를 선택해본다.

Linux 사례 (MX 21)

scatter3d(prestige~education+income, data=Prestige, 
	fit="smooth", residuals=TRUE, bg="white", 
    axis.scales=TRUE, grid=TRUE, ellipsoid=FALSE)

아래 그래픽장치 창에 등장하는 3차원 산점도는 회전을 시켜서 최적의 시점(perspective)을 찾을 수 있다.

Linux 사례 (MX 21)


?scatter3d  # car 패키지의 scatter3d 도움말 보기

    if(interactive() && require(rgl) && require(mgcv)){
scatter3d(prestige ~ income + education, data=Duncan, id=list(n=3))
Sys.sleep(5) # wait 5 seconds
scatter3d(prestige ~ income + education | type, data=Duncan)
Sys.sleep(5)
scatter3d(prestige ~ income + education | type, surface=FALSE,
	ellipsoid=TRUE, revolutions=3, data=Duncan)
scatter3d(prestige ~ income + education, fit=c("linear", "additive"),
	data=Prestige)
Sys.sleep(5)
scatter3d(prestige ~ income + education | type,
    radius=(1 + women)^(1/3), data=Prestige)
	}
	## Not run: 
# drag right mouse button to identify points, click right button in open area to exit
scatter3d(prestige ~ income + education, data=Duncan, id=list(method="identify"))
scatter3d(prestige ~ income + education | type, data=Duncan, id=list(method="identify"))
    
## End(Not run)

'Graphs > 3D graph' 카테고리의 다른 글

3. Save graph to file  (0) 2022.03.07
2. Identify observations with mouse  (0) 2022.03.06

그래프 > 원 그래프...
Graphs > Pie chart...

Linux 사례 (MX 21)

carData 패키지에서 Prestige 데이터셋을 선택하여 활성화시키자. Prestige 데이터셋에는 요인형 변수가 type 하나이다. 원 그래프는 요인형 변수를 시각화할 때 사용하는 기법의 하나이다. <색깔 선택>에서 '색깔 팔레트에서'를 선택하고 <그림 이름표>에 내용을 이해하는데 효과적인 이름표와 제목을 입력한다.

Linux 사례 (MX 21)

with(Prestige, piechart(type, xlab="type (직업유형)", ylab="", 
main="1971년 캐나다 직업군의 유형 비율", col=palette()[2:4], scale="percent"))

Linux 사례 (MX 21)


?pie  # graphics 패키지의 pie 도움말 보기

require(grDevices)
pie(rep(1, 24), col = rainbow(24), radius = 0.9)

pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12)
names(pie.sales) <- c("Blueberry", "Cherry",
    "Apple", "Boston Cream", "Other", "Vanilla Cream")
pie(pie.sales) # default colours
pie(pie.sales, col = c("purple", "violetred1", "green3",
                       "cornsilk", "cyan", "white"))
pie(pie.sales, col = gray(seq(0.4, 1.0, length.out = 6)))
pie(pie.sales, density = 10, angle = 15 + 10 * 1:6)
pie(pie.sales, clockwise = TRUE, main = "pie(*, clockwise = TRUE)")
segments(0, 0, 0, 1, col = "red", lwd = 2)
text(0, 1, "init.angle = 90", col = "red")

n <- 200
pie(rep(1, n), labels = "", col = rainbow(n), border = NA,
    main = "pie(*, labels=\"\", col=rainbow(n), border=NA,..")

## Another case showing pie() is rather fun than science:
## (original by FinalBackwardsGlance on http://imgur.com/gallery/wWrpU4X)
pie(c(Sky = 78, "Sunny side of pyramid" = 17, "Shady side of pyramid" = 5),
    init.angle = 315, col = c("deepskyblue", "yellow", "yellow3"), border = FALSE)

그래프 > 막대 그래프...
Graphs > Bar graph...

Linux 사례 (MX 21)

carData 패키지에 있는 Prestige 데이터셋을 활성화시키자. Prestige 데이터셋에는 요인형 변수가 한개 있다. type 변수인데 자동으로 선택된다. 만약 두개 이상이라면, 그 아래 있는 <집단 기준으로 그리기...>에서 추가적인 요인형변수를 선택할 수 있다.

Linux 사례 (MX 21)

<선택기능> 창에 있는 <축 크기조정>에서 '백분율'을 선택하자. <색깔 선택>에서 '색깔 팔레트에서'를 선택하자. 그리고 <그림 이름표>에 그래프를 이해하는 데 효과적인 이름표와 제목을 입력하자.

Linux 사례 (MX 21)

with(Prestige, Barplot(type, xlab="type (직업유형)", ylab="Percent", 
  main="1971년 캐나다 직업군에서 직업유형별 막대그래프", 
  col=palette()[2], scale="percent", label.bars=TRUE))

아래와 같이 그래픽장치 창에 막대 그래프가 출력된다.

Linux 사례 (MX 21)


?Barplot  # RcmdrMisc 패키지의 Barplot 도움말 보기

with(Mroz, {
  Barplot(wc)
  Barplot(wc, col="lightblue", label.bars=TRUE)
  Barplot(wc, by=hc)
  Barplot(wc, by=hc, scale="percent", label.bars=TRUE)
  Barplot(wc, by=hc, style="parallel", 
    scale="percent", legend.pos="center")
})

그래프 > 조각 도표...
Graphs > Strip chart...

Linux 사례 (CentOS 7.x)

carData 패키지에 포함된 Prestige 데이터셋을 활성화 시킨다. type 이라는 요인이 하나만 있다. <반응 변수 (하나 선택)>에서 income 변수를 선택해보자.

Linux 사례 (CentOS 7.x)

<선택기능> 창에서, <값 복제하기>에 있는 '움직임(떨림)'을 선택해보자. 그리고, <그림 이름표>에 있는 이름표와 제목에 내용 이해를 돕는 변수 이름, 설명, 제목 등을 입력한다.

Linux 사례 (CentOS 7.x)

stripchart(income ~ type, vertical=TRUE, method="jitter", 
	xlab="type (직업유형)", ylab="income (연소득)", 
    main="1971년 캐나다 직업유형별 연소득에 관한 조각 도표", data=Prestige)

아래 그래픽장치 창에 '조각 도표(Strip chart)'가 제작된다. 직업유형별로 연소득의 사례들이 크기별로 표시되어 있음을 알 수 있다.


?stripchart  # graphics 패키지의 stripchart 도움말 보기

x <- stats::rnorm(50)
xr <- round(x, 1)
stripchart(x) ; m <- mean(par("usr")[1:2])
text(m, 1.04, "stripchart(x, \"overplot\")")
stripchart(xr, method = "stack", add = TRUE, at = 1.2)
text(m, 1.35, "stripchart(round(x,1), \"stack\")")
stripchart(xr, method = "jitter", add = TRUE, at = 0.7)
text(m, 0.85, "stripchart(round(x,1), \"jitter\")")

stripchart(decrease ~ treatment,
    main = "stripchart(OrchardSprays)",
    vertical = TRUE, log = "y", data = OrchardSprays)

stripchart(decrease ~ treatment, at = c(1:8)^2,
    main = "stripchart(OrchardSprays)",
    vertical = TRUE, log = "y", data = OrchardSprays)

그래프 > 평균 그림...
Graphs > Plot of means...

Linux 사례 (CentOS 7.x)

carData 패키지에 있는 Prestige 데이터셋을 활성화시키고, 그래프 메뉴창에 <평균 그림...> 기능을 선택하면 아래와 같은 추가 선택 창이 등장한다. type 이라는 요인형 변수 하나가 Prestige 데이터셋에 있어 자동 선택되며, <반응 변수 (하나 선택)>에서 income (수입, 연소득)을 선택해보자.

Linux 사례 (CentOS 7.x)

<선택기능> 창에서 <그림 이름표>에 내용적 이해를 돕기 위해 변수이름, 그래프 제목에 설명을 입력하자.

Linux 사례 (CentOS 7.x)

with(Prestige, plotMeans(income, type, error.bars="se", xlab="type (직업유형)", 
  ylab="income (연소득)", main="1971년  캐나다 직업유형별 연소득 평균그림", connect=TRUE))

Prestige 데이터셋의 요인형 변수 type에는 세개의 수준이 있으며, bc, prof, wc 등이다. 아래 그래픽장치 창에는 bc, prof, wc 직업 유형에 포함된 직업들의 평균 소득을 알리는 그래프가 출력된다.

Linux 사례(CentOS 7.x)

income 변수 대신 prestige 변수를 선택해보자. 해당 직업에 대한 사회적 권위의 크기를 표시하는 prestige 변수의 평균 그림을 직업유형 bc, prof, wc 별로 제작해 보자.

with(Prestige, plotMeans(income, type, error.bars="se", 
	xlab="type (직업유형)", ylab="prestige (직업권위)", 
    main="1971년  캐나다 직업유형별  직업권위 평균그림", connect=TRUE))

Linux 사례 (MX 21)

with(Prestige, plotMeans(prestige, type, error.bars="se", xlab="type (직업유형)", 
  ylab="prestige (직업권위)", main="1971년 캐나다 직업유형별 직업권위 평균그림", connect=TRUE))
with(Prestige, plotMeans(prestige, type, error.bars="se", xlab="type (직업유형)", 
  ylab="prestige (직업권위)", main="1971년 캐나다 직업유형별 직업권위 평균그림", connect=FALSE))

명령문의 함수 내부를 살펴보자. 맨 마지막의 'connect=TRUE/FALSE' 가 다를 것이다. 아래 메뉴 창의 맨 아래에서 <평균 프로파일 연결하기>에 표시를 제거해보자.

Linux 사례 (MX 21)
Linux 사례 (MX 21)


?plotMeans  # RcmdrMisc 패키지의 plotMeans 도움말 보기

if (require(car)){
    data(Moore)
    with(Moore, plotMeans(conformity, fcategory, partner.status, ylim=c(0, 25)))
}

그래프 > XY 조건 그림...
Graphs > XY conditioning plot...

Windows 사례 (10 Pro)

carData 패키지의 Prestige 데이터셋을 활성화시키자. 연소득과 직업의 사회적귄위에 대한 이해를 확대하고자 income, prestige 변수의 연관성에 대하여 시각적으로 점검한다고 하자. bc, prof, wc라는 수준을 가진 요인형 변수 type을 집단화시켜 시각화에 포함시키자.

Windows 사례 (10 Pro)

<선택기능> 창에 있는 많은 선택 기능은 기본설정으로 놓고 오른쪽의 <그림 이름표>에 그래프의 내용적 이해를 높이고자 관련 사항을 추가적으로 입력하자.

Windows 사례 (10 Pro)

xyplot(prestige ~ income, groups=type, type="p", pch=16, 
  auto.key=list(border=TRUE), par.settings=simpleTheme(pch=16), 
  scales=list(x=list(relation='same'), y=list(relation='same')), data=Prestige, 
  xlab="income (연소득)", ylab="prestige (직업의권위)", main="연소득에 따른 직업의 사회적 권위인식")

그래픽장치 창에 아래와 같은 그래프가 출력된다. 직업유형을 뜻하는 type 변수의 수준인 bc, prof, wc 수준의 범례가 보인다. 그리고 그 색깔별로 점들이 찍혀 있어, 추가적인 이해를 제공한다.

Windows 사례 (10 Pro)

아래 그림은 직업유형 변수인 type을 "Groups 'groups='에서 해제하고, Conditions'|'에 선택한다.

Windows 사례 (10 Pro)

<선택기능>창의 오른쪽에 있는 <그림 이름표>에 내용적인 이해를 높이는 이름표과 제목을 넣자.

Windows 사례 (10 Pro)

xyplot(prestige ~ income | type, type="p", pch=16, auto.key=list(border=TRUE),
   par.settings=simpleTheme(pch=16), scales=list(x=list(relation='same'), 
  y=list(relation='same')), data=Prestige, xlab="income (연소득)", ylab="prestige 
  (직업의권위)", main="연소득에 따른 직업의 사회적 권위의식")

아래에 있는 그래픽장치 창은 위에 있는 그래픽장치 창과 달리 직업유형별(bc, prof, wc)별로 산점도가 각각 제작된다.

Windows 사례 (10 Pro)

xyplot() 함수는 시계열적 수치형 변수와 관련해서는 lineplot()과 유사하게 그래프를 출력할 수 있다. carData 패키지의 Bfox의 사례를 수치형 time 변수로 변환시키고 그래프를 만들어보자.

Windows 사례 (10 Pro)

<선택기능> 창에 있는 <그림 유형(하나 또는 둘 모두)>에 점/줄(선) 모두 선택해보자. 물론 <그림 이름표>에 내용을 추가할 수도 있다.

Windows 사례 (10 Pro)

xyplot(menwage + womwage ~ time, type=c("p", "l"), pch=16, auto.key=list(border=TRUE), 
	par.settings=simpleTheme(pch=16), scales=list(x=list(relation='same'), 
	y=list(relation='same')), data=Bfox)

시간의 흐름에 따른 수치형 변수들의 변화 흐름을 파악할 수 있다. 주의해야할 점은 두개 이상의 수치형 변수를 그래프에 모두 넣을 경우, 각 변수들의 사례 기준(크기, 비율 등)이 동일해야 시각화가 특징을 잡아내는데 효과적이다.

Windows 사례 (10 Pro)


?xyplot  # lattice 패키지의 xyplot 도움말 보기

require(stats)

## Tonga Trench Earthquakes

Depth <- equal.count(quakes$depth, number=8, overlap=.1)
xyplot(lat ~ long | Depth, data = quakes)
update(trellis.last.object(),
       strip = strip.custom(strip.names = TRUE, strip.levels = TRUE),
       par.strip.text = list(cex = 0.75),
       aspect = "iso")

## Examples with data from `Visualizing Data' (Cleveland, 1993) obtained
## from http://cm.bell-labs.com/cm/ms/departments/sia/wsc/

EE <- equal.count(ethanol$E, number=9, overlap=1/4)

## Constructing panel functions on the fly; prepanel
xyplot(NOx ~ C | EE, data = ethanol,
       prepanel = function(x, y) prepanel.loess(x, y, span = 1),
       xlab = "Compression Ratio", ylab = "NOx (micrograms/J)",
       panel = function(x, y) {
           panel.grid(h = -1, v = 2)
           panel.xyplot(x, y)
           panel.loess(x, y, span=1)
       },
       aspect = "xy")

## Extended formula interface 

xyplot(Sepal.Length + Sepal.Width ~ Petal.Length + Petal.Width | Species,
       data = iris, scales = "free", layout = c(2, 2),
       auto.key = list(x = .6, y = .7, corner = c(0, 0)))


## user defined panel functions

states <- data.frame(state.x77,
                     state.name = dimnames(state.x77)[[1]],
                     state.region = state.region)
xyplot(Murder ~ Population | state.region, data = states,
       groups = state.name,
       panel = function(x, y, subscripts, groups) {
           ltext(x = x, y = y, labels = groups[subscripts], cex=1,
                 fontfamily = "HersheySans")
       })

## Stacked bar chart

barchart(yield ~ variety | site, data = barley,
         groups = year, layout = c(1,6), stack = TRUE,
         auto.key = list(space = "right"),
         ylab = "Barley Yield (bushels/acre)",
         scales = list(x = list(rot = 45)))

bwplot(voice.part ~ height, data=singer, xlab="Height (inches)")

dotplot(variety ~ yield | year * site, data=barley)

## Grouped dot plot showing anomaly at Morris

dotplot(variety ~ yield | site, data = barley, groups = year,
        key = simpleKey(levels(barley$year), space = "right"),
        xlab = "Barley Yield (bushels/acre) ",
        aspect=0.5, layout = c(1,6), ylab=NULL)

stripplot(voice.part ~ jitter(height), data = singer, aspect = 1,
          jitter.data = TRUE, xlab = "Height (inches)")

## Interaction Plot

xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos,
       type = "a",
       auto.key =
       list(space = "right", points = FALSE, lines = TRUE))

## longer version with no x-ticks

## Not run: 
bwplot(decrease ~ treatment, OrchardSprays, groups = rowpos,
       panel = "panel.superpose",
       panel.groups = "panel.linejoin",
       xlab = "treatment",
       key = list(lines = Rows(trellis.par.get("superpose.line"),
                  c(1:7, 1)),
                  text = list(lab = as.character(unique(OrchardSprays$rowpos))),
                  columns = 4, title = "Row position"))

## End(Not run)

그래프 > 선 그래프...
Graphs > Line graph...

Windows 사례 (10 Pro)

선 그래프(Line graph/ lineplot)는 주로 시계열적인 흐름을 가진 수치형 변수의 변화를 점검할 때 사용한다.

1. carData 패키지에 있는 Bfox 데이터셋을 활성화시키자. Bfox 데이터셋이 활성화된 후, R Commander 화면에서 <데이터셋보기> 버튼을 눌러보자. 행의 이름이 연속형 숫자인 연도로 되어있다.
2. 연도형 행 이름을 time 이라는 변수로 전환시켜보자. 아래 <새로운 변수 계산하기> 창의 <계산 표현식>을 참고하라.

data(Bfox, package="carData")
Bfox$time <- with(Bfox, as.numeric(rownames(Bfox)))

Windows 사례 (10 Pro)

아래와 같이 데이터셋 내부 구성이 보일 것이다.

Windows 사례 (10 Pro)

Bfox 데이터셋에서 새롭게 만든 변수 time을 <x 변수 (하나 선택)>에서 선택하고, <y 변수 (하나 이상 선택)>에 주별(weekly) 남성급여, 여성급여를 뜻하는 menwage, womwage 두 변수를 선택한다. y 변수에 두개의 변수를 선택했다는 것은 두개의 선그래프가 time 변수의 흐름에 따라 만들겠다는 의미이기도 하다.

Windwos 사례 (10 Pro)

with(Bfox, lineplot(time, menwage, womwage))

그래픽장치 창에 다음과 같은 선 그래프가 출력된다. 1946년부터 1975년까지의 남성과 여성의 주급(weekly wage)의 변화를 보게된다.

Windows 사례 (10 Pro)

또 다른 선 그래프를 만들어보자. partic은 노동인구내의 여성비율, parttime은 주당 34시간 이내의 시간제노동 비율이다. 이 두 변수의 연도별 변화 추이를 살펴보기 위하여 선 그래프를 만든다면 아래와 같을 것이다:

Windows 사례 (10 Pro)

선 그래프를 만드는데 가장 기본적인 출발점은 x 변수에 시간적 흐름을 갖는 변수를 선택하는 것이다. 만약 시계열적 수치형 변수가 선택되지 않는다면, 선그래프는 시사점을 가지 못하는 불규칙한 그림을 갖게 될 것이다. 예를 들어, carData에 있는 Prestige 데이터셋에는 시계열적 정보를 갖는 수치형 변수가 없다. prestige 변수를 x 변수에 놓고, education과 income을 y 변수에 놓고, 그래프를 그려보자.

Windows 사례 (10 Pro)

다음과 같은 경고문을 만나게된다. x 변수인 prestige 변수의 사례배열에 순서가 없다는 지시문을 보게된다.

Windows 사례 (10 Pro)
Windows 사례 (10 pro)


?lineplot  # RcmdrMisc 패키지의 lineplot 도움말 보기

 if (require("car")){
    data(Bfox)
    Bfox$time <- as.numeric(rownames(Bfox))
    with(Bfox, lineplot(time, menwage, womwage))
}

그래프 > 산점도 행렬...
Graphs > Scatterplot matrix...

Windows 사례 (10 Pro)

산점도(Scatterplot)는 두개의 수치형 변수 사이의 관계성을 시각적으로 보면서 통찰력을 얻고자 하는 기법이다. 그런데 세개 이상의 수치형 변수들을 함께 점검하면서 관계성을 시각화하고자 할 때, 산점도의 이용은 다소 불편함이 생긴다. 이 때 산점도 행렬(Scatterplot matrix)을 사용한다.
Prestige 데이터셋에서 네개의 수치형 변수를 점검한다고 하자. 교육연수, 연소득, 직업권위의식, 여성참여율 등과 관련된 변수들 네개를 선택하자.

Windows 사례 (10 Pro)

<선택기능> 창에서 <대각선에서>는 <밀도그림>을 선택하고, <다른 선택 기능>에서는 <최소-제곱 선>, <평활선>을 선택하고, 그래프 제목을 추가한다.

Windows 사례 (10 Pro)

scatterplotMatrix(~education+income+prestige+women, regLine=TRUE, 
  smooth=list(span=0.5, spread=FALSE), diagonal=list(method="density"), 
  data=Prestige, main="Prestige 데이터셋 주요변수들의 산점도 행렬")

아래와 같은 그래픽장치 창에 산점도 행렬이 등장한다. education, income, prestige, women 이라는 네개의 변수 각각의 밀도함수가 변수 이름과 함께 작성되어 있으며, 행렬 매 칸마다 두개의 변수 사이의 산점도가 제공된다. 행렬 칸 바깥에 있는 숫자들은 수치형 변수들의 사례 값 범위를 요약해서 보여준다.

Windows 사례 (10 Pro)

산점도행렬에는 많은 정보가 담겨있다. 확인하고자 하는 정보만을 부각시키고자 산점도행렬을 단순화시키는 노력이 요구된다.


?scatterplotMatrix  #  car 패키지의 scatterplotMatrix 도움말 보기

scatterplotMatrix(~ income + education + prestige | type, data=Duncan)
scatterplotMatrix(~ income + education + prestige | type, data=Duncan,
    regLine=FALSE, smooth=list(span=1))
scatterplotMatrix(~ income + education + prestige,
    data=Duncan, id=TRUE, smooth=list(method=gamLine))

+ Recent posts