2012-04-21 3 views
1

R 패키지를 사용하여 Google 시각화 API로 googleVis MotionChart을 만들려고합니다.googleVis MotionChart의 기본 변수

내 문제는 인터넷에 MotionChart를 게시하고 싶기 때문에 다른 축/크기에 대한 기본 변수를 제어 할 수 있기를 원합니다.

'xxx'
gvisMotionChart(M, options=list(state='xxx') 

그러나 기본 시계열이 상태에 포함되지 않습니다하는 MotionChart의 고급 탭에서 복사 할 수있는 상태입니다 : 정보의

많은을 사용하여 설정할 수 있습니다.

제 질문은 googleVis MotionChart의 다른 축/크기에 대한 기본 변수를 어떻게 선택할 수 있습니까?

+0

과거에 비슷한 질문에 대한 답변이왔다 : http://stackoverflow.com/questions/7063410/r-googlevis-problem-embedding-on-blogger http://stackoverflow.com/questions/4646779/embedding-googlevis-chart-into-a-web-site –

+0

DWin 링크를 이용해 주셔서 감사합니다.하지만 기본 변수에는 아무 것도 볼 수 없습니까? –

답변

1

다음은 idvar 및 timevar 외에도 xvar, yvar, colorvar 및 sizevar에 대한 기본값을 지정할 수있는 gvisMotionChart의 작은 인터페이스 함수입니다. 제공된 data.frame의 열 순서를 변경하면됩니다. 이 함수는 부울을 숫자로 변환합니다 (그렇지 않으면 gvisMotionChart가 오류를 발생시킵니다). 나도 모션 차트가 단면 데이터를 분석하기에 매우 편리하기 때문에 timevar = NULL을 설정할 수 있습니다.

# Convenience interface to gvisMotionChart that allows to set default columns 
    myMotionChart = function(df,idvar=colnames(df)[1],timevar=colnames(df)[2],xvar=colnames(df)[3],yvar=colnames(df)[4], colorvar=colnames(df)[5], sizevar = colnames(df)[6],...) { 
     library(googleVis) 

     # Generate a constant variable as column for time if not provided 
     # Unfortunately the motion plot still shows 1900... 
     if (is.null(timevar)) { 
      .TIME.VAR = rep(0,NROW(df)) 
      df = cbind(df,.TIME.VAR) 
      timevar=".TIME.VAR" 
     } 

     # Transform booleans into 0 and 1 since otherwise an error will be thrown 
     for (i in 1:NCOL(df)) { 
      if (is.logical(df [,i])[1]) 
       df[,i] = df[,i]*1 
     } 

     # Rearrange columns in order to have the desired default values for 
     # xvar, yvar, colorvar and sizevar 
     firstcols = c(idvar,timevar,xvar,yvar,colorvar,sizevar) 
     colorder = c(firstcols, setdiff(colnames(df),firstcols)) 
     df = df[,colorder] 

     gvisMotionChart(df,idvar=idvar,timevar=timevar,...) 
    } 
3

Section 2.6 of the googleVis vignette을 자세히 읽으면 googleVis 패키지에서 프로그래밍 방식으로 프로그래밍하는 방법을 잘 모르겠다.

내가 이것을했을 때 나는 손으로 편집했다. motion chart with European public health time series의 예제에는 몇 가지 기본 시계열이 선택되어 있습니다. 페이지 하단의 소스를 살펴보십시오. 이 문제가 도움이되는지 알려주세요 ...

+0

감사합니다! 2.6 절을 확인했지만 거기에 축에 대한 기본 변수를 설정하는 방법을 알 수 없습니다. 나는 내 질문이 약간 불투명하다고 생각한다. 나는 바꿔 말할 것이다. –

+0

나는 @gauden의 예를 아주 좋아했습니다. 위대한 R 사례 일뿐만 아니라 정책적 함의에 대한 심층적 인 연구가 필요합니다. –

+0

감사합니다 @DWin. 시각적으로는 R을, 논쟁에는 파이썬을, 그리고 약간의 코딩에는 R을 사용했습니다. 나는 더 깊이 있고 더 많이 똑같이하려고 노력하고있다. 그러나 그것은 매우 고무적이다. – gauden

1

좋아요. 해결 방법을 찾았지만 성가신 것 같습니다. 그것은 패키지가 데이터 집합에있는 순서로 변수를 전달하는 것 같습니다.

따라서 다른 축/치수에 대한 기본 변수를 선택하려면 데이터 프레임에서 변수의 순서를 변경해야합니다. 다음 변수 축에 할당하는 순서는 다음

  1. X 축
  2. Y 축
  3. 도트 색상
  4. 도트 크기

의 ID (예를 들어, 국가) 시간 (예 : 년) 변수가 자동으로 인식됩니다. 이 두 변수 뒤에 오는 첫 번째 변수가 X 축에, 두 번째 변수가 Y 축에 놓이는 것을 의미합니다.

그러나 더 좋은 방법이 있어야합니다.

1

내가 더 좋은 방법에 대해 잘 모르겠지만, 나는 최근 비슷한 일을했을 때, 나는 변수의 기본 순서가 될 것으로 생각한다

## order of variables in data file: 
## 1 = idvar 
## 2 = timevar 
## 3 = bubble colour 
## 4 = x var 
## 5 = y var 
## 6 = bubble size 

예는 세계 은행 (World Bank)의 데이터를 사용

library(googleVis) 
library(WDI) 

HealthWealth = WDI(country="all", indicator=c("SP.DYN.LE00.IN", "NY.GDP.PCAP.CD", "SP.POP.TOTL"), 
    start = 1960, end = 2010, extra = TRUE) #Can take some time 
HealthWealth = HealthWealth[-which(is.na(HealthWealth$Country.Name)), ] 
HealthWealth = HealthWealth[-which(HealthWealth$Region == "Republic of Belarus"),] 
HealthWealth = HealthWealth[, c(37, 3, 10, 5,4,6)] 
names(HealthWealth) = c("Country", "Year", "Region", "GDP.(Current.$US)", "Life.Expectancy", "Population") 
## order of variables in data file: 
## 1 = idvar 
## 2 = timevar 
## 3 = bubble colour 
## 4 = x var 
## 5 = y var 
## 6 = bubble size 

## Create a motion chart 
M <- gvisMotionChart(HealthWealth, idvar="Country", timevar="Year") # Be patient 

## Display the chart in your browser 
plot(M) # Change the x axis from lin to log 
+0

고마워요, 이것도 제가 지금 가지고있는 것입니다 (사실 WB 데이터를 사용하고 있습니다). 그러나 변수의 순서를 변경하지 않고 변수를 변경하는 방법을 알고 싶습니다. –