在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?如果我在圖形生成器中使用了“PAGE”函數,現在同一頁面上有多個圖形,如何在循環中一張一張地獲取圖形生成器圖形並將其另存為 png?
這是來自 @Craige 的示例代碼
dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$temp/myPics" );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
謝謝。
回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?pptx 文件只是一個偽裝的 zip 文件。 如果將擴展名從 .pptx 更改為 .zip(您可能需要更改 Windows 中的文件夾設置以顯示已知的文件擴展名)。 zip 文件內有一個名為 media 的文件夾,其中包含所有圖像。
回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?我讓它在幻燈片上循環工作。 謝謝你溫迪回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?謝謝梅蘭妮。 我會嘗試一下。回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?Powerpoint 可以工作,但我不確定如何從 Powerpoint 中獲取圖片。
我已經嘗試過並成功保存為 html。 當您將報告另存為 html 時,所有圖片都會保存到名為 gfx 的文件夾中。 如果您不斷地保存文件,gfx 文件夾不會像 html 頁面那樣被重寫,但所有圖片都會添加到同一個文件夾中。
我已經在消息中處理了這個示例腳本的多個版本,有時它會單獨保存每個圖形,有時則不會。 在當前的迭代中,它似乎有效。 如果沒有,則有一些代碼可以保存到 powerpoint,而不是被註釋掉。 看看是否可以使用更複雜的腳本來完成此操作。 請注意,最終的 html 頁面將僅包含最後一個 graphbuilder 報告,而不是全部。 在 gfx 文件夾中,我為每個圖表獲取一張圖片,為每個圖例框獲取一張圖片 - 您必須剔除它們。
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
unique lotid = Associative Array(dt:lot_id);
unique Wafer = Associative Array(dt:wafer);
currentid = unique lotid << First;
currentwafer = unique Wafer << First;
For( iwfr = 1, iwfr <= N Items( unique Wafer ), iwfr++,
nextwafer = unique Wafer << Next( currentwafer );
Eval(
Eval Expr(
gb4 = dt << Graph Builder(
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Page( :SITE ),
Group X( :PNP2 ),
Group Y( :NPN2 ),
Color( :lot_id )
),
Elements( Treemap( X, Y, Legend( 24 ), Summary Statistic( "% of Total" ) ) ),
where( Wafer == Expr( currentwafer ) ),
Display( :SITE, Size( 181, 153 ), List Display ),
)
)
);
// powerpoint save
//If( File Exists("$desktop/wow.pptx"), gb4 << Save Presentation( "$desktop/wow.pptx", "Append", "PNG" ),
// gb4 << Save Presentation( "$desktop/wow.pptx", "PNG" )
//);
// html save
gb4 << Save HTML( "$desktop/wow.html", "PNG" );
gb4 << Close Window;
currentid = unique lotid << First;
);回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?是的,腳本索引中有一個示例。
- 單擊“幫助”菜單並選擇“腳本索引”。
- 進入保存演示文稿在搜索框中。
腳本索引提供了語法、簡要說明和示例腳本保存演示文稿。 為了您的方便,我附上了窗戶的圖片。
祝您的腳本項目好運!
溫蒂
回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?我想我可以處理這個問題
難道只是一行腳本就能得到powerpoint嗎?
謝謝你溫迪回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?使用 Page(),完整的圖形不會存儲在可以保存到單獨的 PNG 文件的單獨的 DisplayBox 中。 導出到 PowerPoint 文件會破壞頁面。 否則,您將需要使用本地數據過濾器、Where() 或 By()。
溫蒂
回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?嗨溫迪,
感謝您使用 By 的想法。 我想要 PAGE 功能的原因是,它為我提供了一個鎖定秤的選項,並且我可以顯示所有秤,而不僅僅是所選的秤。
有沒有辦法使用 PAGE 函數訪問不同的圖形來繪製? 這真的很有幫助。
太感謝了。
回复:在圖形生成器 JSL 中使用 PAGE 時如何保存圖形?你好,
就我個人而言,在這種情況下我會使用 By() 而不是 Page(),因為使用 By 會返回圖形生成器對象的列表。 然後我可以循環遍歷對象列表來保存每個 PNG 文件。 例如,
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
By( :age, :sex )
);
For( i = 1, i <= N Items( gb ), i++,
fName = Report( gb[i] )[Outline Box( 1 )] << Get Title;
Report( gb[i] )[Outline Box( 1 )] << Save Picture( "$TEMP/myPics/" || fName || ".png", "PNG" );
);
希望這可以幫助!
溫蒂