| 스피커 |
성적 증명서 |
| 조포웨 |
안녕하세요, 제 강연에 오신 것을 환영합니다. |
| |
이번 발표는 JMP 사용자 커뮤니티에서의 논의를 계기로 이루어졌습니다. 앤더슨 메이필드 박사는 미국 해양대기청(NOAA)과 마이애미 대학교의 해양 생물학자입니다. |
| |
그는 산호초의 건강을 연구합니다. 그는 저희 JMP On Air의 지구의 날 특집 방송에서 발표를 했고, 이번 학회에서도 발표를 할 예정입니다. |
| |
JMP 사용자 커뮤니티 게시물에서 그는 이 그림을 올렸습니다. 보시다시피, 그림에는 산호나 산호초를 나타내는 그래픽들이 많이 있습니다. |
| |
그리고 그것들은 여러 가지 데이터를 하나의 작은 그래픽에 모두 담아 표현하고 있는데, 마치 비디오 게임에서 선수 통계를 보여주는 것과 비슷합니다. |
| |
그리고 그들은 플레이어가 장면을 돌아다닐 때 플레이어 주변을 맴돌고 있습니다. 이제 제 강연 제목이 "비디오 게임, 해양 생물학자, 그리고 JMP를 합치면 무엇이 나올까요?"인 이유를 아시겠죠? 그럼 다음으로 넘어가겠습니다. |
| |
제가 오늘 이야기할 내용은 JMP에서 가능한 게임 기반 또는 게임에서 영감을 받은 솔루션, 특히 사용자 지정 그래픽 스크립트 사용에 관한 것입니다. |
| |
맞춤형 지도에 대해 이야기하고, 제가 개발한 3D 웹 기반 산점도 애플리케이션과 JMP 데이터 세트를 해당 애플리케이션에 통합한 방법에 대해서도 설명하겠습니다. |
| |
다음은 그래픽 스크립트의 예입니다. |
| |
다음은 사용자 지정 지도를 사용하는 예입니다. 그리고 이것은 제가 만든 3D 산점도 애플리케이션입니다. |
| |
자, 그럼 시작하겠습니다. 사용자 지정 그래픽 스크립트가 어떻게 사용되는지 보여드리기 위해 간단한 예제를 준비했습니다. |
| |
그리고 제가 JMP를 열고 실행하면 |
| |
이 작은 그림에 대해 이야기해 보겠습니다. |
| |
저는 제가 처음부터 직접 만든 가상의 데이터 세트를 사용합니다. 이 데이터 세트는 기본적으로 그레이트 배리어 리프에서 시드니까지 이어지는 물고기 경주에 관한 것입니다. |
| |
그래픽 스크립트를 보려면 [사용자 지정]으로 이동하면 됩니다. |
| |
그리고 이 작은 더하기 버튼을 누르면 새 스크립트를 추가할 수 있습니다. 처음에는 비어 있지만, JMP에는 몇 가지 샘플 스크립트가 있습니다. |
| |
저는 다각형 스크립트가 마음에 들어요. 아주 간단하거든요. 그냥 삼각형을 그리는 스크립트예요. 제 그래프에 적용하면 삼각형이 그려지는 걸 볼 수 있죠. |
| |
투명도 설정, 채우기 색상 설정, 다각형 그리기 이렇게 세 줄의 코드만으로 모든 게 해결됐습니다. |
| |
하지만 우리가 정말로 알고 싶은 건, 이걸 스크립트에 어떻게 삽입하느냐는 거죠? 가장 쉬운 방법은 '답변' 버튼을 누르는 겁니다. |
| |
스크립트를 스크립트 창에 저장합니다. 여기 스크립트가 있습니다. 스크립트는 위도와 경도를 입력받아 실행되는 간단한 이변수 플랫폼으로 시작합니다. 그리고 그 아래에는 그래픽 추가 스크립트가 포함된 디스패치가 있습니다. |
| |
그리고 나서 샘플의 세 줄이 나옵니다. |
| |
그래픽 스크립트를 사용하는 아주 간단한 예시를 보여드렸습니다. |
| |
자, 이제 그래픽 스크립트를 삽입하겠습니다. 이 스크립트는 각 지점 위에 떠 있는 막대를 그립니다. |
| |
이 애플리케이션에서 제가 제일 먼저 하는 일은 투명도를 설정하는 것이고, 그 다음 작은 그래픽의 배경을 그리는 것입니다. |
| |
하나는 허기를 달래고, 하나는 힘을 기르고, 하나는 속도를 높이는 데 쓰면 된다. |
| |
이제 전체 스크립트를 보여드리겠습니다. 이 스크립트는 다른 요소들에 의존하기 때문입니다. 주로 색상이나 배경 등을 처리하기 위해 제가 설정한 상수들에 의존합니다. |
| |
이것은 제가 만든 막대 그리기 함수입니다. 위치, 길이, 색상을 매개변수로 받습니다. 따라서 각 막대에 사용할 수 있습니다. 이 스크립트를 실행하면 다음과 같습니다. |
| |
자, 여기 작은 그림이 있습니다. |
| |
마치 게임에서 영감을 받은 듯한 건강 모니터가 각 물고기 위를 맴돌며 호주 동부 해류를 따라 시드니까지 헤엄쳐 내려가는 모습을 보여줍니다. |
| |
이 영상은 해당 함수가 어떻게 작동하는지 단계별로 보여주는 기본적인 예시입니다. 화면에 마커 하나만 있는 상태에서 시작해서 각 마커마다 픽셀 원점을 설정했습니다. |
| |
그다음에는 배경을 그리기 시작하는데, 몇 가지 단계를 거쳐야 합니다. 처음 선 굵기를 설정할 때는 실제로 아무것도 보이지 않습니다. |
| |
그다음 색상을 검정색으로 설정합니다. 그리고 나서 배경과 매우 굵은 선을 그리는 '움직임' 기능을 사용합니다. |
| |
각 막대마다 막대의 색상을 설정하고, 위치를 조정한 다음, 선을 그립니다. 그런 다음 배경을 그리고 색상을 설정하면 막대가 배경과 이어집니다. 물론 나머지 두 선에도 같은 작업을 반복합니다. |
| |
이제 다양한 그래픽 기능을 사용할 수 있습니다. JSL 구문 참조의 그래픽 기능 섹션을 참고하면 원하는 것을 무엇이든 만들 수 있습니다. 자, 마음껏 시도해 보세요. |
| |
다음으로는 사용자 지정 지도를 사용하는 방법에 대해 이야기하겠습니다. |
| |
실례합니다. |
| |
사용자 지정 맵을 사용하려면 기본적으로 두 개의 테이블을 제공해야 합니다. 첫 번째 테이블은 사용하려는 모든 도형에 대한 정의이고, 두 번째 테이블은 테이블에 있는 도형들의 이름을 지정합니다. |
| |
그리고 이 이름 열의 경우, 기본적으로 맵 역할 열 속성을 추가해야 하며, 해당 속성의 유형은 도형 이름 정의여야 합니다. 잠시 후에 보여드리겠습니다. |
| |
아주 간단한 예를 들어보겠습니다. 물론, 우리에게 필요한 것은 큰 클래스입니다. 아주 간단한 예를 들어보죠. |
| |
그것에 대한 지도도 있는데, 그 지도에는 직사각형 두 개만 있습니다. 파일을 열어볼게요. |
| |
말씀드렸다시피 아주 작은 지도입니다. 좌표를 보여드리기 위해 작은 지도를 준비했습니다. |
| |
이 스크립트는 기본적으로 요점을 보여줍니다. |
| |
제가 이 위쪽 네 개를 강조 표시하면, 이게 맨 위쪽 직사각형이고, 그 다음 네 개는 아래쪽 직사각형입니다. |
| |
위쪽은 무게이고, 아래쪽은 높이입니다. 그리고 열 속성을 보시면, |
| |
지도 역할, 도형 이름 정의입니다. |
| |
자, 이제 이 지도가 준비되면 빅 클래스를 열 수 있습니다. |
| |
기존 데이터를 직접 재사용할 수는 없습니다. 먼저 키와 무게 열을 가져와서 쌓아야 합니다. 테이블로 이동해서 쌓아 보겠습니다. |
| |
이제 저는 이러한 열들이 쌓여 있는 표를 갖게 되었습니다. |
| |
레이블에 높이와 무게가 번갈아 표시되는 것을 볼 수 있는데, 이를 지도 파일에 연결하려면 열 속성을 하나 더 추가해야 합니다. |
| |
이건 맨 아래쪽에 있는 지도 역할입니다. 하지만 '모양 이름 정의'라고 하지 않고 '모양 이름 사용'이라고 할 것이며, 우리는 선택해야 합니다. |
| |
맵 파일, 이름은 맵 파일입니다. |
| |
또한 열 이름을 설정하세요. |
| |
자, 이제 끝났습니다. 이제 이걸 이용해서 그래프를 그릴 수 있겠네요. |
| |
우리가 만들고자 하는 그래프는 기본적으로 레이블 열을 지도 모양으로 사용하여 위쪽과 아래쪽 모양을 설정한 다음, 모든 데이터가 포함된 데이터 열을 끌어다 놓는 방식입니다. |
| |
색깔 역할에 맞춰서요. 자, 이렇게 해서 빅 클래스에 참여한 모든 학생들에 대한 요약을 살펴보았습니다. 하지만 우리가 정말로 알고 싶은 것은... |
| |
학생 한 명당 하나씩입니다. 이걸 래핑 롤로 드래그하면 좀 빡빡하지만, 행당 레벨 수를 10으로 설정해서 좀 넓게 펼쳐 놓겠습니다. |
| |
자, 됐습니다. 제가 원했던 게 바로 이거였어요. 이 그래프는 유용할 수 있습니다. |
| |
그 자체로. |
| |
자, 그럼 이제 조금 더 복잡한 걸 해볼까요? |
| |
음, 사실 좀 더 복잡한 작업을 하려면 사용자 지정 지도 제작 추가 기능을 사용하는 게 좋을 거예요. |
| |
이건 정말 훌륭한 추가 기능입니다. 이미지를 끌어와서 그 위에 따라 그릴 수 있게 해줍니다. |
| |
모든 도형을 따라 그린 후에는 '임의 데이터로 완료'를 클릭하면 데이터가 생성됩니다. |
| |
필요한 셰이프 파일 두 개와 사용자 지정 지도를 테스트할 수 있는 임의 데이터 세트가 있습니다. 여기서는 변수 네 개와 가운데 하나를 사용한 예시를 보여드리겠습니다. 기본적으로 제가 이전에 보여드렸던 슬라이드의 정사각형 버전입니다. |
| |
사실 우리가 원했던 모양은 그게 아니었어요. 우리는 둥근 모양을 원했고, 메이필드 박사님이 그걸 '복합 파이'라고 불렀던 걸로 기억해요. |
| |
그게 공식 용어인지는 모르겠지만, 저는 스크립트로 이런 것들을 만들어보기로 했습니다. |
| |
그래서 제가 하고 싶었던 건 셰이프 파일을 만들어서 원하는 결과를 얻는 것이었습니다. 즉, 가운데에 무언가가 있는 네 개의 도형이 필요하다는 것이었죠. |
| |
그러고 나서 '나는 프로그래머니까, 좀 더 다양한 기능을 추가하고 좀 더 유연하게 만들고 싶어'라는 생각이 들었습니다. |
| |
그래서 저는 아마 다른 사람들도 저와 같은 작업을 하고 싶어 하겠지만, 변수는 두 개에 평균이나 중심 변수 등을 추가하고 싶어 할 수도 있겠다는 생각이 들었습니다. |
| |
그리고 마름모꼴이나 정사각형처럼 다양한 모양으로도 표현할 수 있으면 좋겠다는 생각이 들었어요. 제가 천재는 아니지만 운이 좋았죠. Xan Gregg 님이 JMP에서 극좌표 그래프를 어떻게 만드는지 묻는 글에 답변을 달아주셨거든요. |
| |
자, 이제 시작입니다. |
| |
자, 이제 됐습니다. |
| |
그들은 이런 모양을 찾고 있었는데, 제가 필요로 하는 것과 아주 비슷해 보였어요. |
| |
Xan이 한 일은 정말 훌륭했어요. 이 작업을 수행하는 유연한 스크립트로, 원 주위에 쐐기 모양의 영역을 생성하는데, 다만 중심 부분이 없고 제가 원했던 특정 방식으로 파일 이름을 지정하는 기능이 빠져 있었어요. |
| |
하지만 그렇게 어렵지는 않았어요. 제 스크립트가 바로 그런 역할을 합니다. 컴플렉스 파이를 실행하면 이 파이의 레시피가 나오고, 컴플렉스 파이 메이커를 열어서 재료를 추가하면 됩니다. 우선, 도형의 개수를 지정해야 해요. |
| |
그리고 나서 중앙에 놓을지, 아니면 위쪽으로 약간 치우치게 놓을지 결정하면 됩니다. |
| |
그다음에는 부드러움을 조절하는 변수가 있습니다. |
| |
그리고 나서 충전량을 더 늘릴지 줄일지에 대한 내부 반경과 외부 반경도 제공해야 합니다. |
| |
물론, 다음 단계는 스크립트를 실행하는 것이고 그러면 결과가 생성됩니다. |
| |
이것들 |
| |
셰이프 파일을 제공해 드리고, 사용자 지정 파이 차트 생성기나 사용자 지정 지도 추가 기능처럼 예제 테스트도 해드립니다. 자, 여기 5개의 셰이프를 사용하는 복잡한 파이 차트의 예가 있습니다. 셰이프의 개수는 5개입니다. |
| |
그리고 부드러움은 7로 설정하는 것이 좋습니다. 5나 6으로 설정해도 아마 괜찮을 겁니다. |
| |
아주 작게 그렸습니다. 크기는 사실 중요하지 않습니다. 중요한 것은 상대적인 내부 반지름과 외부 반지름입니다. 메이필드 박사님께서도 대략 이런 점을 염두에 두셨기에, 저는 내부 반지름을 4, 외부 반지름을 9로 정했습니다. |
| |
그럼 이제 이 기능들을 실제로 어떻게 활용할 수 있는지 살펴보겠습니다. 빅 클래스 데모에서 했던 것처럼, 열을 쌓아야 합니다. 하지만 한 가지 다른 점은 제 셰이프 파일에는 강도와 건강 변수가 없다는 것입니다. 사실 이 변수들은 다른 곳에 있습니다. |
| |
셰이프 파일에서 이들은 웨지 1, 2, 3으로 이름이 지정되어 있습니다. |
| |
센터. |
| |
그래서 저는 만들어야 할 게 있어요. |
| |
파일은 |
| |
두 가지를 연결하세요. |
| |
먼저, 작은 학교 건물이 층층이 쌓여 있는 예를 들어보겠습니다. |
| |
저는 체력, 힘, 속도 열을 쌓아서 그렇게 했습니다. |
| |
그리고 여기 제가 사용할 셰이프 파일이 있습니다... 바로 이 이름의 셰이프 파일입니다. |
| |
컬럼 속성이 있다는 점에 유의하세요. |
| |
지도 역할, |
| |
네, 지도 역할 정의입니다. |
| |
그리고 이는 사용자 지정 모양을 만들 때 필요한 사항입니다. |
| |
그래서 연결된 파일, 즉 열을 도형에 매핑하는 파일은 기본적으로 제 파일 내의 레이블들을 나열하는 방식으로 만들었습니다. |
| |
쌓인 파일. |
| |
그리고 다른 열인 '도형 이름'에는 도형들의 이름을 나열했습니다. |
| |
여기서 중요한 것은 도형의 이름입니다. |
| |
맵 역할이라는 속성이 있지만, 이것은 도형 이름 사용입니다. |
| |
그리고 이 데이터 레이블 열에는 링크 ID가 있어서 가상으로 스택형 테이블과 다시 조인할 수 있습니다. |
| |
이제 표들을 모두 설정했으니, |
| |
다음으로 해야 할 일은 실제로 그래프를 만드는 것입니다. |
| |
이제 이전과 비슷하게 진행될 겁니다. 차이점은 레이블을 지도 도형으로 드래그하는 대신, 이제는 가상으로 결합되는 열을 사용해서 지도 도형으로 드래그하면 원하는 도형이 만들어진다는 점입니다. 다음으로 해야 할 일은 색상 열에 데이터를 추가하는 것입니다. |
| |
그리고 포장지에 이름을 추가하세요. 그러면 제 물고기들이 모두 여기에 있습니다. |
| |
각각에 대한 그래픽이 있습니다. 원하는 그라데이션을 얻기 위해 여기에서 그라데이션으로 이동하는데, 바로 이겁니다. |
| |
초록색이 제대로 나왔는지 확인하고 싶어서 색상을 반전시키겠습니다. |
| |
자, 이렇게 해서 완성입니다. 이것이 바로 그것입니다. |
| |
이 지도 자체만으로도 유용합니다. 각 물고기를 살펴보고 상태를 확인할 수 있으니까요. 하지만 저는 이 지도를 좀 더 활용하고 싶습니다. |
| |
제가 원하는 것은 해당 이미지를 툴팁에 넣는 것입니다. |
| |
그렇게 하기 위해 데이터 테이블을 만들겠습니다. |
| |
내가 가지고 있던 파일과 그 그래픽을 다시 가져와 주세요. |
| |
여기서 빨간색 삼각형 아래에 있는 "데이터 테이블 생성" 버튼을 클릭하면 새로운 데이터 테이블이 생성됩니다. |
| |
이 모든 이미지들을 활용하면 정말 유용해요. 특히 서로 연결해 놓으면 더 좋죠. 저는 이걸 링크 ID로 설정해서 제 간단한 학교 파일에서 이 이미지들을 가리키도록 할 거예요. 그러면 각 마커에 해당하는 그래프를 찾아서 각 캐릭터별로 확인할 수 있을 거예요. |
| |
좋아요, 이 내용은 다른 파일에 저장되어 있는데, 그 파일을 열어볼게요. 파일 이름은 '건강 이미지'입니다. |
| |
그래서 우리는 더 이상 이것이 필요하지 않습니다. |
| |
이제 스택형 파일은 더 이상 필요하지 않습니다. |
| |
하지만 우리에게 정말 필요한 것은 제가 처음에 언급했던 소규모 학교의 사례입니다. |
| |
이것들이 표시되도록 하려면 먼저 해야 할 일이 있습니다. |
| |
그래프는 이미지 열, 즉 가상 열을 설정하는 것입니다. |
| |
표시된 대로입니다. |
| |
간단한 그래프를 사용해서도 이를 표현할 수 있습니다. |
| |
이미 예시가 하나 있는데요... 음, 다시 열어볼게요. 왜 안 되겠어요? 제가 처음부터 다시 시작한다는 걸 보여드리려고 제 레이스 스크립트를 보여드리는 겁니다. 이 열에 레이블을 지정했으니 이제 이 그래픽 중 하나에 마우스를 올리면... 세 개가 표시됩니다. |
| |
이 그래픽에 대한 정보 조각들을 만들고 원하는 만큼의 문자를 고정할 수 있습니다. |
| |
이것이 바로 이러한 그래픽을 활용하는 한 가지 방법입니다. |
| |
또 다른 방법은 마커를 사용하는 것입니다. |
| |
그리고 새로 추가될 그래픽은 점들 위에 떠 있는 형태로 표시되며, 이전에 사용했던 마름모꼴 모양 대신 사용될 것입니다. |
| |
건강 관련 이미지, 소규모 학교 이미지, 그리고 그 그래픽까지 다시 가져오겠습니다. |
| |
자, 지금 우리에게는 다이아몬드가 있습니다. 이 다이아몬드를 이런 모양으로 만들려면, |
| |
우리는 또 다른 것을 추가해야 했습니다. |
| |
이 가상 참여 열에 배지를 추가합니다. 정말 인기가 많아지고 있어서 마커로 사용하고 있습니다. 그래서 새로운 배지가 나타났습니다. 제 뒤에도 배지가 있습니다. |
| |
이 이미지들이 장면에 배치된 것을 보실 수 있을 겁니다. 마지막으로 한 가지 더 말씀드리자면, 저는 이미지 주변의 이 흰색 부분이 마음에 들지 않는데, 사실 그 부분은 그래프 이미지 자체에 포함되어 있는 것입니다. |
| |
이 문제를 해결하는 한 가지 방법은, 흰색 영역을 찾아 알파 채널을 설정하여 투명하게 만드는 스크립트를 사용하는 것입니다. 이제 보기 좋은 그래프를 얻을 수 있습니다. |
| |
사각형 배경이 아니라 둥근 모양이 좋습니다. 그리고 마커 크기를 키우는 것도 고려해 보세요. |
| |
그리고 우리는 11까지 올라갈 수 있습니다. |
| |
어때 보여요? 제가 생각했던 거랑 거의 비슷하네요. 10이 더 나았을지도 모르겠지만, 전 11까지 가는 게 좋거든요. 좋아요, 그럼 이쯤에서 마무리하죠. |
| |
마커를 사용합니다. 좀 더 복잡한 그래프를 만들고 싶습니다. 앤더슨 메이필드 박사님이 원하셨던 것은 마커 뒤에 히트맵을 표시하는 것입니다. 꽤 복잡하지만 JMP는 이를 처리할 수 있습니다. 저것은 실제로 등고선입니다. |
| |
여기 제가 준비한 것 중 하나는 소규모 학교의 또 다른 버전입니다. 하지만 이번에는 해수 온도를 고려했습니다. |
| |
맨 아래쪽에 |
| |
그리고 그것들은 실제 점수로 표시되지 않도록 숨겨져 있습니다. |
| |
그래서 저는 이미 이 작업에 필요한 이미지를 만들어 두었습니다. |
| |
사실, 이전에 만들었던 것과 똑같은 이미지입니다. |
| |
그럼 제가 먼저 시작하겠습니다. |
| |
여기서 끝부분을 보여드릴게요. 제가 원하는 게 뭔지 제대로 보여드리기 위해서요. 기본적으로 이런 그래픽들을 만들고 싶습니다. |
| |
윤곽선 위에 마우스 커서를 올리면 몇 가지 범례가 나타나는데, 그것들이 무엇을 나타내는지 보여줍니다. |
| |
그렇게 어렵지는 않을 거예요. 지도를 미리 배치하고, x축과 y축에 위도와 경도를 입력해 둔 상태에서 시작해 볼게요. |
| |
우선 제가 하고 싶은 첫 번째 일은 윤곽선을 추가하는 것입니다. |
| |
그리고 약간의 색감을 더해야 하므로, 온도 역할(temp role)을 색상 역할(color role) 위로 드래그하여 이 윤곽선의 레벨 수를 조정하겠습니다. |
| |
알파 값을 조금 변경하고 부드러움을 더하세요. |
| |
다음으로 하고 싶은 건 좀 더 투명하게 만드는 거예요. |
| |
거기에 0.6을 붙여봅시다. |
| |
이건 제가 전에 보여드렸던 것과 거의 비슷하네요. 이제 마커를 추가하는 방법은 두 가지가 있습니다. Shift 키를 누른 상태에서 점을 클릭하거나, 직접 드래그해서 추가할 수 있습니다. 드래그해서 추가하려면, |
| |
그런 다음 마커 크기를 다시 설정할 수 있습니다. |
| |
그렇게 함으로써 |
| |
여기로 가서 다른 작업을 하고 이번에는 10을 사용해 볼게요. 11은 조금 너무 컸던 것 같아요. 좋아요, 잘 됐네요. 거의 다 됐어요. 이 범례를 작업해야 하는데, 이 색깔들을 어떻게 넣을까요? 음, 체력 역할은 이미 있죠. |
| |
그리고 저 부분을 드래그해서 모서리 쪽으로 옮기면 두 번째 색상 역할을 추가할 수 있어요. 처음에는 그래프가 좀 이상해 보일 수 있거든요. |
| |
그 부분은 저희가 처리할 수 있습니다. 문제는 컨투어가 실제로 건강 역할 정보를 사용할 필요가 없다는 것입니다. 따라서 해당 기능을 비활성화하면 원하는 결과로 돌아갈 수 있습니다. |
| |
다음으로 할 일은 범례에 색상을 추가하는 것입니다. 이전처럼 다시 한번 원하는 대로 색상을 지정할 수 있습니다. |
| |
이번에는 좀 더 신경 써서 해볼게요. 라벨을 네 개 만들고 싶어요. |
| |
5시부터 시작해서 까지 올라가도록 하고 싶어요. |
| |
20. |
| |
아, 색상도 반전시키고 싶었어요. |
| |
자, 이렇게 거의 완성됐습니다. 이렇게 생겼으니 거의 다 된 셈이죠. 이제 조금만 더 보기 좋게 다듬으면 돼요. 범례 부분에서 몇 가지 수정하고 싶은 부분이 있거든요. |
| |
그러니 범례 설정으로 가서 그다지 도움이 되지 않는 항목들을 제거하고 체력 범례를 맨 위로 옮기세요. |
| |
자, 이렇게 됐네요. 제가 의도했던 바를 최대한 잘 구현해낸 것 같아요. |
| |
그래서 저건 없앨 수 있겠네요. 이제 모두에게 이게 필요한 건 아니라고 생각해요. |
| |
하지만 저는 여기에 조금 더 덧붙이고 싶습니다. |
| |
이 그래프의 각 영역이 어떤 역할을 하는지, 예를 들어 허기, 속도, 힘, 건강 등을 알 수 있는 범례를 추가하는 건 어떨까요? 이전에는 범례가 없어서 어떤 기능을 하는지 알기 어려웠거든요. 다행히 이제 범례가 생겼네요. |
| |
매핑 파일입니다. 열 이름에서 도형으로 연결됩니다. |
| |
잠시 그 부분을 살펴보겠습니다. |
| |
보시다시피 모든 행에 레이블을 지정했고 데이터 레이블 열에도 레이블을 지정했습니다. 즉, 그래프를 만들 때, |
| |
모든 것에 레이블이 지정될 겁니다. 정말 간단하죠. 도형 이름을 가져다가 지도 영역으로 드래그하기만 하면 이 그래픽 작업은 끝입니다. |
| |
그래서 만약 제가 그 요소를 장면에 추가하고 싶다면, 가장 좋은 방법은 그 요소를 선택하고 더하기 기호를 클릭한 다음 복사하는 것입니다. |
| |
그다음 이미지 편집 프로그램을 열고 디스크에 저장하면 됩니다. 물론 저는 이미 그렇게 했습니다. 그래서 저는... |
| |
그걸 받으시면 보여주시고, 저는 다시 그래픽을 가져와야 해요. |
| |
와, 이거 그냥 끌어다 놓으면 되네. |
| |
저기 있네요. 아, 없네요. 음, 찾는 방법이 있어요. '사용자 지정'으로 가면 배경에 드롭되어 있을 거예요. 보통 이미지를 드래그해서 넣으면 배경 이미지가 함께 들어가거든요. |
| |
자, 이제 우리가 할 일은... 무슨 일이 일어나고 있는지 잘 볼 수 있도록 이걸 치우고... 앞으로 이동하는 것뿐입니다. 저기 나옵니다. |
| |
자, 여기 있습니다. 맨 앞에 있죠. 그리고 제 취향에는 조금 너무 밝아서 투명도를 약간 높이고 싶습니다. |
| |
그럼 0.8을 넣어 봅시다. |
| |
이제 그걸 구석으로 끌어다 놓기만 하면 거의 끝난 거예요. |
| |
네, 작업량이 많았고 파일도 많이 사용되었습니다. 사용된 파일들을 모두 정리해 보겠습니다. 필요한 두 개의 지도 파일과 셰이프 파일을 생성하기 위해 복잡한 파이 차트 생성 도구를 사용했습니다. 작은 차트들을 쌓아 올렸습니다. |
| |
저는 지도 역할을 가진 파일 이름을 가리키도록 매핑 파일을 구성하기 위해 이 열을 만들었습니다. 링크 참조를 사용하여 소규모 학교 스택으로 가상 조인을 수행했습니다. |
| |
그런 다음 데이터 테이블로 만들고 싶은 그래픽을 만들어서 health images.jmp 파일에 저장했습니다. |
| |
물론, 제가 그 그래픽을 만들 수 있도록 원래의 작은 학교와 다시 연결해야 했습니다. |
| |
그리고 나서 저는 작은 학교의 해양 온도에 대해서도 똑같은 작업을 했고, 제 링크는 건강 이미지와 관련이 있습니다. |
| |
저는 그냥... 제 열을 셰이프 파일로 만들어서 해수 온도 그래프에 사용할 범례를 그렸고, 그걸 드래그해서 넣었어요. |
| |
자, 제가 보여드리고 싶었던 2D 시연은 여기까지입니다. 잠시 숨을 고르고 이제 3D의 세계, 더 나아가 웹의 세계로 들어가 보겠습니다. |
| |
애플리케이션. |
| |
좋아요. |
| |
이것이 제가 만든 웹 기반 3D 산점도 애플리케이션입니다. |
| |
그리고 제가 여러분께 보여드릴 것은 JMP에서 데이터를 가져오는 방법입니다. |
| |
제 신청서는 JMP의 3D 산점도 기능을 기반으로 작성되었습니다. 따라서 이 이미지는 해당 기능이 어떻게 보이는지 다시 한번 보여드리기 위한 것입니다. |
| |
자, 이제 그 기능을 보여주는 간단한 데모를 보여드리겠습니다. |
| |
기본적으로 이 프로그램은... 몇 가지 기능을 보여드리겠습니다. 우선 다양한 데이터 세트를 선택할 수 있는 기능이 있습니다. 여기 다이아몬드 데이터 세트가 있습니다. |
| |
그리고 물론 이 그림은 점을 찍는 역할을 합니다. 그게 핵심이죠. 그리고 이 점들은 작은 공 모양으로 그려지는데, 그 방법은 잠시 후에 설명해 드리겠습니다. |
| |
하지만 그 외에도 JMP처럼 회전, 확대/축소, 좌우 이동 등 다양한 기능을 사용할 수 있습니다. |
| |
그리고 마우스 오버 시 레이블이 나타납니다. 오른쪽 아래 모서리를 보시면 제가 축과 격자를 그리고 약간의 사용자 정의를 추가한 것을 알 수 있습니다. 과하게 꾸미지는 않았죠. |
| |
배경을 바꾸고 벽 색깔도 설정할 수 있어요. 파란색을 조금 넣어볼까요? |
| |
네, 마음에 안 드실 수도 있겠네요. 하지만 이건 데모 버전일 뿐이에요. 나중에 마커 크기를 변경할 수도 있습니다. |
| |
그건 웹에 올라와 있어요. |
| |
네, 제가 이 애플리케이션 개발을 시작했을 때 가장 먼저 하고 싶었던 건 웹에서 제대로 작동하는지, 제 아이폰이나 아이패드에서 원활하게 작동하는지 확인하는 거였습니다. |
| |
그 컴퓨터들은 제 데스크톱만큼 성능이 좋지 않기 때문입니다. 그래서 저는 내장된 3D 데이터셋이나 점점 늘어나는 점들로 이루어진 세 개의 무작위 데이터셋을 만들었습니다. 그리고 그걸 사용해서... |
| |
저전력 기기에서는 25,000 정도가 적당하다고 생각했지만, 고전력 기기에서는 훨씬 더 높은 값도 괜찮습니다. |
| |
그래서 '실제 데이터를 좀 가져와 봐야겠다'라고 생각했고, 유명한 아이리스 데이터 세트를 찾았는데, 마침 CSV(쉼표로 구분된 변수) 형식이었습니다. |
| |
그래서 제가 그걸 가져왔습니다. 하지만 제 내부 구조에 맞게 변환하기 위해 코드를 좀 작성해야 했습니다. |
| |
그래서 JMP에는 데이터 세트가 많으니 그걸 가져오는 게 낫겠다고 생각했죠. 그래서 자동차, 다이아몬드, 유세포 분석 데이터를 가져왔습니다. 유일한 차이점은 유세포 분석 데이터였는데, 제대로 된 데이터가 없었거든요. |
| |
색상 사용에 대한 카테고리가 있어서, 실제로 색상이 없는 그래프를 받아들이도록 제 애플리케이션을 수정해야 했습니다. |
| |
이 애플리케이션은 아주 간단합니다. 페이지가 하나뿐인 웹 앱이에요. HTML 파일 하나, 자바스크립트 파일 몇 개, 그리고 몇 가지 서드파티 라이브러리와 폰트 하나, 텍스처 하나를 사용했는데, 그 텍스처는 도형을 만드는 데 사용되는 공 모양입니다. |
| |
제가 게임 업계에서 사용하는 기술은 파티클 또는 파티클 시스템입니다. 시뮬레이션 게임이나 3D 시각화에 아주 흔하게 사용되죠. 불, 연기, 불꽃놀이, 구름 같은 멋진 효과를 만들 수 있습니다. |
| |
저는 예전에 상용 게임 엔진 개발에 참여한 적이 있는데, 당시 제 담당 업무는 파티클 시스템을 개선하는 것이었습니다. |
| |
사실 저는 이미 이와 관련된 경험이 좀 있습니다. C++ 분야였지 자바스크립트는 아니었지만요. 하지만 인터랙티브 HTML5와 JMP 작업을 꽤 오랫동안 해왔기 때문에, 이제는 자바스크립트에도 도전해 볼 때가 되었다고 생각했습니다. |
| |
제가 좋아하는 두 가지를 결합하여 파티클 시스템을 사용하는 웹 기반 버전을 만들게 되었습니다. 운이 좋게도 Three.js라는 라이브러리를 찾았습니다. |
| |
하드웨어 가속 3D 드로잉 기능을 제공하고 문서화도 훌륭하며 파티클 시스템을 포함한 다양한 코드 예제가 있어서 제 애플리케이션을 개발하는 데 매우 도움이 되었습니다. |
| |
사실 저에게 가장 어려웠던 부분은 JMP에서 데이터를 어떻게 입력하는지 알아내는 것이었습니다. |
| |
하지만 제가... 그 스크립트를 공유해 드리겠습니다. 제가 한 가지 확실히 한 일은 이 객체들을 쉽게 사용할 수 있도록 만들었다는 것입니다. |
| |
제 애플리케이션에서 제가 한 일 중 하나는 자바스크립트 객체 배열을 만들고, 숫자 열에는 최소값과 최대값을 자동으로 추가한 것입니다. 이렇게 하면 자바스크립트에서 직접 계산할 필요가 없습니다. 물론 JMP는 이런 계산을 아주 잘 해주죠. |
| |
음, 카테고리, 특히 색상 열의 경우, 카테고리 딕셔너리를 사용해야 했습니다. 기본적으로 카테고리 이름들을 하나의 리스트에 담고, 0부터 시작하는 인덱스를 사용하여 해당 값들을 참조하는 방식입니다. 이러한 구조로 작동하는 것입니다. |
| |
사용자 인터페이스를 만들어보면 좋을 것 같다는 생각이 들었어요. 실제로 해보니 아주 간단하더라고요. 잠시 후에 보여드릴게요. 기본적으로 제가 해야 할 일은 x, y, z 값을 숫자형 열로 제한하는 것뿐입니다. |
| |
그런 다음 색상 역할에 대한 범주형 열로 제한합니다. |
| |
그럼 해당 코드를 살펴보겠습니다. |
| |
좋습니다, 우선 아주 간단한 데이터셋의 예를 들어보겠습니다. |
| |
그 후 대화 상자 설정은 정말 쉬웠습니다. 열 대화 상자를 사용하여 숫자 열과 색상 열에 원하는 값을 지정하고, 모델링 유형이 범주형(순서형 및 명목형)인지 확인했습니다. |
| |
다음으로, 열 데이터를 가져와 필요한 JavaScript 객체를 생성합니다. 여기 최소값과 최대값 문자열이 있습니다. 그리고 이것은 이러한 객체들을 문자열로 구성하는 것입니다. |
| |
그리고 색상 열이 있다면 똑같이 하면 됩니다. 다만 문자열을 추출해서 자바스크립트 객체에 넣어줘야 하기 때문에 조금 더 복잡해집니다. |
| |
그리고 마지막으로, 이 내용을 텍스트 파일로 저장하기만 하면 됩니다. |
| |
그럼 한번 시도해 봅시다. |
| |
물론 Big Class를 사용할 거라서 파일 크기가 작을 거예요. |
| |
그리고 |
| |
그래서 스크립트를 실행했습니다. |
| |
그리고 "XYZ에 대해 무엇을 원하십니까?"라고 물었습니다. 키와 몸무게는 이미 선택했고, 나이는 숫자 열이므로 그것도 사용하고, 성별은 색상을 선택하는 데 좋은 항목입니다. |
| |
그럼 이제 끝났습니다. 그리고 실제로 여기 출력되는 내용은 파일이 어디에 있는지 알려주는 겁니다. |
| |
바로 다음 슬라이드에 그 내용이 있습니다. 그럼 그쪽으로 넘어가시죠. |
| |
그래서 여러분은 Big Class가 자바스크립트로 어떻게 생겼을지 항상 궁금했을 거라고 생각합니다. 바로 이것입니다. 보시다시피 세 가지가 있습니다. |
| |
숫자 열에는 최소값과 최대값이 있고, 색상 열에는 성별을 나타내는 F와 M으로 이루어진 딕셔너리가 있습니다. 0은 여성을, 1은 남성을 의미합니다. 자, 이것으로 제 발표를 마무리하겠습니다. 즐거우셨기를 바랍니다. |
| |
시청해 주셔서 감사합니다. 질문이 있으시면 언제든지 물어보세요. |