글목록

2021년 5월 13일

Module 6. 엑셀 차트 일괄적으로 그리기 - (1)시작하며

지난 글까지는 여러 파일의 데이터를 불러와서, 1개 시트에 배열하고, 필요한 열만 주기적으로 선택하는 매크로를 작성하였습니다. 또한, fitting이 필요한 데이터 또는 노이즈가 있는 데이터에 대해서는 일괄적으로 노이즈를 제거(smoothing)하는 1가지 방법도 매크로로 작성하였습니다.

사실 엑셀이 데이터를 핸들링하는데에는 비교적 유용하지만, 수많은 데이터를 플로팅하는 데 있어서 그다지 편리하지도 않고, 그래픽적으로 기능이 우수하지도 않습니다. 한편, Origin이나 SigmaPlot같은 전문적인 플로팅 소프트웨어의 경우, 기능도 다양하고 템플릿을 만들어두면 빠르게 원하는 형식의 플롯을 그릴 수 있지만, 데이터수가 많아지면 일일이 X, Y 데이터쌍을 만들어서 플로팅하고 경향을 파악하는데에 수작업이 많이 들어갑니다.

저의 경우에는 엑셀에서 데이터를 핸들링해서 빠르게 차트를 그려본 후, 경향성이 있는.. 혹은 필요한 부분만 데이터를 추출해서 별도로 플로팅을 합니다. 이렇게 하면, 플로팅 소프트웨어를 이용해서 어떤 데이터를 가시화시켜줄 것인지 판단하는데 도움이 됩니다. 만약 처음부터 수많은 데이터를 이러한 소프트웨어에 바로 불러와서 데이터를 일일이 비교하다보면 데이터 배열을 계속 바꿔가면서 새로 플로팅하느라 시간이 많이 소요됩니다.

혹은 어떤 경우에는 굳이 연구보고서에 삽입할 필요는 없어서 그냥 경향만 확인하는 용도인 경우, 엑셀의 차트만 빠르게 그려보고 다음 실험을 준비하기도 합니다.


본 블로그의 엑셀 관련 매크로는.. 10개, 20개... 수십개의 데이터 파일을 일괄적으로 처리하는 데 목적을 두고 있습니다. 1~2개 데이터를 처리하는데에는 수작업만으로도 충분하기 때문입니다. 많은 데이터를 취급하다보면, X, Y열을 선택하는 것부터 실수를 연발하는게 사람이다보니, 이러한 실수를 줄이고, 반복된 작업을 컴퓨터가 대신하도록 처리하도록 해서 시간을 아끼자는 취지입니다. 

지금까지의 매크로들은 데이터를 일괄적으로 처리했지만, 단순히 숫자의 나열인 경우 그 의미를 파악하기 어렵습니다. 결국 그 데이터가 유의미해지기 위해서는 시각적인 표현을 통해 데이터간 차이를 파악하는 것이 무엇보다 중요합니다.

예를 들어, 10개의 X선 회절 데이터가 있고, 이 중 1~5번 데이터와 6~10번 데이터는 성분이 유사하고, 홀수번 데이터와 짝수번 데이터가 제조 방법이 유사한 그룹이라고 한다면, 이들을 비교하기 위해서 X, Y 데이터쌍을 1~5번, 6~10번으로 그룹핑한 후 플로팅하고, 다시 홀수번과 짝수번 데이터들을 그룹핑한 후 다시 플로팅합니다. 물론 수작업으로 10개를 따로 플로팅한 후 비교하는 것도 가능하겠습니다만, 미세한 차이를 확인하기 위해서는 그룹핑한 후 1개의 플롯을 그려보는 것이 좋겠지요. 이러한 작업을 플로팅 소프트웨어에서 하려면 생각보다 많은 시간이 걸리고, 데이터 갯수가 많아질수록 실수할 확률은 더욱 높아지겠지요. 또한 어떤 경우에는 각 데이터가 그다지 차이가 없어서 새로운 조건에서 실험을 다시 설계해야할 수도 있구요. 만약, 이러한 작업을 엑셀에서 빠르게 수행한 후, 경향을 빠르게 파악한다면 불필요한 수작업은 많이 줄어들 것입니다.


이러한 작업은 (X, Y) 쌍으로 구성된 데이터에 대해서 수행할 수도 있고, X는 없고 Y 데이터만 있는 경우도 있습니다. 경우에 따라서는 (X,Y,Z) 데이터일 수도 있습니다만, 아쉽게도 엑셀에는 통상의 공학적 측정데이터와 같이 데이터수가 많은 경우, 3차원 데이터에 대한 차트는 그다지 유용하지 않은 것 같습니다. 예를 들면 Contour plot이나 이미지 데이터 같은 경우에는 추천할만한 기능이 없습니다.

따라서, 엑셀의 일괄 차트 그리기 기능은 (X, Y)쌍으로 구성되거나, Y 데이터만 있는 경우에 한해 일괄적으로 Scatter 차트를 그리는 매크로를 작성해보려고 합니다.


이러한 작업을 하기 위해서..

1) 데이터는 주기적으로 배열이 되어있고, (일괄적으로 데이터를 불러와서 시트에 배열시킨 상태)
2) 1개의 데이터 주기 안에는 1개의 X와 여러개의 Y가 있거나, 또는 X는 없고 Y 데이터만 있다고 가정하며,
3) 1개 주기의 데이터에 대하여 차트를 각각 그릴 것인지, 아니면 합쳐서 그릴 것인지 선택할 수 있도록 하여 일괄적으로 차트를 그릴 예정입니다.

1)번 단계는 이미 fitting이나 smoothing 매크로에서 구현되어 있기 때문에 그대로 사용하거나, 필요하면 수정해서 사용할 수 있으며, 2)~3) 단계만 고민하면 될 듯 합니다.

다음에는 차트를 자동으로 그리기 위한 기초 작업을 시작하도록 하겠습니다.

댓글 없음:

댓글 쓰기

의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~

많이 본 글 :