2016-08-11 3 views
2

R 출력에서 ​​Excel 파일을 생성하려면 openXLSX 패키지를 사용하고 있습니다.
Excel 통합 문서에 Excel 차트를 추가하는 방법이 없습니다.
python에는 엑셀 차트를 추가하기위한 클래스가있는 creating Excel files 모듈이 있다는 것을 알았습니다.
R을 사용하여이 작업을 수행 할 수 있습니까?R을 사용하여 Excel에서 차트 만들기

+0

'xlsx'와'r2excel' 패키지를 조합 해 보셨습니까? – Abdou

+0

'r2excel'이 R 도표를 추가하지 않는다는 것을 보았습니다 – eliavs

+0

당신이하고 싶은 것을 오해 했음에 틀림 없습니다. R에서 차트를 만들고 엑셀 시트로 가져오고 싶다고 생각했습니다. 아마도 다른 사람이 더 좋은 제안을했을 것입니다. 그러나 왜 R이 손으로 또는 VBA로 그것을 할 수있을 때 탁월한 통합 문서를위한 Excel 차트를 만들도록하고 싶습니까? – Abdou

답변

2

다음은 패키지 XLConnect을 사용하는 솔루션입니다. 작은 메모지만, 미리 작성해야하는 차트 템플릿에 의존하며 시트 또는 차트를 기존 파일에 추가하는 대신 새 파일을 생성합니다.

그것은 두 단계로 구성되어

  1. 사용하려는 차트의 유형에 엑셀 템플릿을 준비.
  2. 매번 필요에 따라 R의 데이터로 템플릿 파일을 업데이트합니다.

첫 번째 단계 : 당신이 필요합니다 차트의 종류에 따라, 엑셀 템플릿을 준비합니다. 모든 템플릿을 동일한 파일 (다른 시트에 있음) 또는 여러 파일에 둘 수 있습니다. 템플릿을 준비 할 때 필요한 시트 유형을 시트에 포함 시키십시오. 그러나 특정 셀을 참조하는 대신 "명명 된 범위"를 사용해야합니다. for example을 참조하십시오. sample file I created을 사용할 수도 있습니다. 파일 및 차트의 데이터 참조에서 Sheet1!$A$2:$A$4Sheet1!$B$2:$B$4 대신 Sheet1!bar_namesSheet1!values으로 명명 된 범위를 사용합니다.

Excel의 명명 된 범위에 대한 보조 메모입니다. 명명 된 범위는 차트에서 사용할 데이터에 이름을 지정한 다음 절대 위치 대신 명명 된 범위를 사용하도록 "차트에 지시"합니다. "수식"메뉴에서 "이름 관리자"에 액세스 할 수 있습니다. 명명 된 범위를 사용하는 이유는 XLConnect이 명명 된 범위를 제어 할 수 있기 때문에 명명 된 범위를 수정할 때 차트가 동적으로 업데이트됩니다.

두 번째 단계 : 귀하의 필요에 맞게 다음 코드를 적용하십시오. 주로 자신의 데이터 프레임을 사용하고 createName 함수에서 참조를 업데이트하십시오.

library(XLConnect) # load library 
wb1 <- loadWorkbook(filename = "edit_chart_via_R_to_excel.xlsx") 
new.df <- data.frame(Type = c("Ford", "Hyundai", "BMW", "Other"), 
      Number = c(45, 35, 25, 15)) # sample data 
writeWorksheet(wb1, data = new.df, sheet = "Sheet1", 
       startRow = 1, startCol = 1, header = TRUE) 
# update named ranges for the chart's use. 
# Note that 
# "Sheet1!$A$2:$A$5" and "Sheet1!$B$2:$B$5" 
# should change according to the data you are updating 
createName(wb1, "bar_names", "Sheet1!$A$2:$A$5", overwrite = TRUE) 
createName(wb1, "values", "Sheet1!$B$2:$B$5", overwrite = TRUE) 
saveWorkbook(wb1) 

이 트릭을 수행해야합니다.

새 파일로 제공하고 (덮어 쓰지 않고 원본 서식 파일을 유지하려는 경우) 수정하기 전에 서식 파일을 복사하고 저장할 수 있습니다.

관련 문제