JMP 그래프 시리즈를 파워포인트나 워드로 더 잘 내보낼 수 있는 방법이 있는지 알아봤습니다. 기본 내보내기 기능은 너무 밋밋해서 혹시 성공하신 분이 있다면 어떻게든 조작할 수 있으면 좋겠습니다. 파워포인트에서 매크로를 녹화하고 수정해서 작업을 할 수는 있지만, 그보다 더 나은 기능을 기대하고 있습니다.
프레젠테이션에 python-pptx를 사용하기 시작했습니다. 꽤 유용하지만 문서가 좀 부족합니다. 저는 PowerPoint 레이아웃을 만들어 일반 프레젠테이션으로 저장한 다음, 사용자 입력을 통해 JMP 창을 사용하여 Python 코드를 작성하는 것을 좋아합니다.
내 PowerPoint 프레젠테이션 스크립트 중 첫 번째 부분의 예:
pycode = Eval Insert(
"\[from pptx import Presentation
from PIL import Image, ImageEnhance
import io
p = Presentation(r'^template_path^')
slid = p.slides[0]
mom = slid.shapes[1]
slid.shapes.title.text = '^pres^'
mom.text = '^name^'
for x in range(^Char( total_items )^):
print("""adding placeholder slides....
""" + str(x + 1) + ' out of ^Char( total_items )^')
p.slides.add_slide(p.slide_layouts[6])
]\"
);
그 후에는 제가 가지고 있는 샘플 검사 이미지 폴더를 순환합니다. 그래프를 직접 만들어 jpg 파일로 저장할 수도 있습니다. 다음 코드는 조건표에서 정보를 추가하고, 폴더에서 jpg 파일만 가져온 후, 슬라이드에 넣기 전에 어두운 사진 중 일부를 보정합니다. 옵션은 기본적으로 무궁무진합니다.
For Each( {v, i}, sub_folders,
condition = Left( Right( v, 4 ), 2 );
pycode ||= Eval Insert(
"slid = p.slides[^Char( i )^]
slid1 = slid.placeholders[10]
slid2 = slid.placeholders[11]
slid3 = slid.placeholders[12]
slid4 = slid.placeholders[13]
slid5 = slid.placeholders[14]
slid6 = slid.placeholders[15]
slid7 = slid.placeholders[16]
slid8 = slid.placeholders[17]
slid.shapes.title.text = \!"\!"\!"^v || Try( \!": \!" || cond_array[condition], \!"\!" )^\!"\!"\!"\!N"
);
pics = Filter Each( {value, index}, Files In Directory( thefolder || v ),
And( Ends With( Lowercase( value ), "jpg" ), !Contains( value, "_APA_" ) )
);
pycode ||= Eval Insert(
"slid1.insert_picture(r'^thefolder || v || \!"/\!" || pics[1]^')
slid2.insert_picture(r'^thefolder || v || \!"/\!" || pics[3]^')
img = Image.open(r'^thefolder || v || \!"/\!" || pics[5]^')
enh = ImageEnhance.Brightness(img)
img = enh.enhance(3)
img2 = io.BytesIO()
img.save(img2, 'JPEG')
slid3.insert_picture(img2)
img = Image.open(r'^thefolder || v || \!"/\!" || pics[7]^')
enh = ImageEnhance.Brightness(img)
img = enh.enhance(2)
img2 = io.BytesIO()
img.save(img2, 'JPEG')
slid4.insert_picture(img2)
slid5.insert_picture(r'^thefolder || v || \!"/\!" || pics[2]^')
slid6.insert_picture(r'^thefolder || v || \!"/\!" || pics[4]^')
img = Image.open(r'^thefolder || v || \!"/\!" || pics[6]^')
enh = ImageEnhance.Brightness(img)
img = enh.enhance(3)
img2 = io.BytesIO()
img.save(img2, 'JPEG')
slid7.insert_picture(img2)
img = Image.open(r'^thefolder || v || \!"/\!" || pics[8]^')
enh = ImageEnhance.Brightness(img)
img = enh.enhance(2)
img2 = io.BytesIO()
img.save(img2, 'JPEG')
slid8.insert_picture(img2)
print('^Char( i )^ of ^Char( Length( sub_folders ) )^ complete....')\!N"
);
);
pycode ||= Eval Insert( "\[p.slides.add_slide(p.slide_layouts[4])
p.save(r'^pptx_savefile^')
]\" );
플레이스홀더를 사용해 이미지 삽입을 간소화했지만, 이미지를 직접 추가하고 크기와 위치를 지정할 수도 있습니다.