懸停標籤你好,
當我單擊圖形的一個點時,我想在懸停標籤中顯示照片(例如在文件“大類家庭”,腳本“帶圖片的圖形生成器”中)。
我想做同樣的事情,但沒有“圖片”欄
事實上,我有一個包含很多行的資料庫,為每行放置照片會太重
我想在我的電腦上有一個包含所有照片的資料夾,格式為「.jpg」。 這些照片的名稱與我資料庫的「名稱」列中的名稱相同
例如,凱蒂的照片將在我的電腦資料夾中命名為:“KATIE.jpg”
當我單擊一個點時,我想顯示相應的圖像(位於我計算機上的資料夾中,而不是在“圖像”列中),這要歸功於“名稱”列,它的命名方式與我的相同相片
你能幫我嗎 ?
目前,當我經過某個點時,我只能打開包含所有照片的資料夾,但它不會顯示與懸停標籤中的點相對應的照片
謝謝
資料存取大規模客製化回覆:懸停標籤@tx尼爾森感謝您的檢查。
你是對的,縮圖爭論是主要問題@弗朗索瓦絲詢問的是 JMP16 獨有的功能。 在我與此線程的交流中,這一點已在該線程的早期確立@艾瑪1 。 我以為她知道這一點,但我應該更明確(也許在腳本中添加了版本檢查)。
在將影像返回圖片腳本(graphlet JSL 回呼)中顯示之前,可以透過明確縮小影像來製作 JMP15 等效版本。
回覆:懸停標籤@nascif_jmp ,我已經驗證了@弗朗索瓦絲發現運行 JMP 15 的 graphlet 中沒有顯示任何圖形。但是,該圖形在 JMP 16 中顯示。
回覆:懸停標籤你好,
我不明白你的腳本:
看圖片,標籤上沒有圖片。
此致
回覆:懸停標籤再一次問好, @弗朗索瓦絲,
我對這個問題進行了更多思考,我認為這可能與在 Set Graphlet 語句之外使用 JSL 變數有關。 如果沒有看到你的腳本,很難說,但我又看了一遍我發布的範例腳本@艾瑪1我發現定義縮圖大小的變數是在 graphlet 定義之外定義的。 這可能會有問題。
請參閱解決此問題的附加範例 - 希望它能為您提供解決您所描述的問題的途徑。
好機會!
回覆:懸停標籤該圖使用了多個分組。
即使我把它去掉了,也不好。
一切順利
回覆:懸停標籤儘管從螢幕截圖來看,這兩個點似乎位於同一面板上。 不看劇本很難說。 如果您無法在此處發布副本,請將副本傳遞給我們的技術支援。
另外,由於這個問題已經標記為已解決,我建議開始一個新線程。
回覆:懸停標籤你好@弗朗索瓦絲,
該圖是否使用 GroupX、GroupY 或某種其他類型的分組? 如果是這樣,您很可能配置了一個面板,但沒有配置另一個面板 - 這些面板在幕後是獨立的。
一個簡單的解決方法是刪除分組,新增縮圖自訂,然後再新增分組。 這確保了定制將同等地應用於所有面板。
回覆:懸停標籤你好,
我在腳本中為懸停標籤和所有幀添加了相同的縮圖,但我不明白為什麼我有兩個大小不同的圖像。
有人解釋一下嗎?
最好的
問候
回覆:懸停標籤你好@艾瑪1 ,
很高興看到你有進步。 關於錯誤訊息,我的猜測是它與 JMP 15 中不支援的縮圖屬性的使用有關。 刪除後,您似乎在 JMP 15 中沒有收到錯誤訊息,對嗎? 此外,在您的程式碼範例中,您註解掉了 Thumbnail() 屬性,但保留了前面的逗號。 我也會刪除它。
關於為什麼您在第一次嘗試中只獲得第二個圖表中的配置,這是因為您重複使用了“gb”變數名稱。 當您第二次呼叫“gb = Graph Builder(...”時,您覆寫了第一個圖表的參考。
在您的第二次嘗試中,事情成功了,因為您在重用變數之前進行了配置,因此對第一個圖的引用仍然有效。 但你是對的,程式碼重複是不幸的。
我附上一個更新的範例,展示如何使用兩個 JSL 功能解決此問題:
- 函數(捕獲程式碼區塊,以便可以在多個地方使用它們)和
- 列表(將多個引用保留在單一變數中,可以迭代以將操作應用於所有引用)。
使用這些技術將使您的腳本易於維護和組織。
您可以在以下位置了解有關它們的更多信息JMP 腳本編寫指南。
回覆:懸停標籤我在另一台電腦上的 JMP 15 上測試了相同的腳本,並收到了相同的錯誤訊息,該訊息與單擊縮圖中的照片時顯示的一樣
祝你有美好的一天
回覆:懸停標籤我在 JMP 15 下測試了我的腳本,我做了幾次,每次都會出現此錯誤訊息(並且 JMP 15 關閉):

你有解釋嗎?
我收到一條訊息,該訊息已轉至技術支持
回覆:懸停標籤透過重新編寫我的腳本,當我單擊縮圖時,我成功地進一步減小了圖像的大小。 我保留了 0.25 的值,這對我來說似乎很完美
對於我的第二個問題(腳本中顯示僅適用於我的第二個圖表而不是第一個圖表的圖像的部分),我解決了它。
我複製了允許我在縮圖中顯示圖像的腳本部分,並將其「貼上」在每個圖形下方。
它加重了我的腳本的負擔,但我只找到了這個解決方案。 你在想別的事嗎?
謝謝
回覆:懸停標籤你好,
這是我的腳本:
Names Default To Here( 1 );
cwd = "...";
//dt = Open("....jmp");
//thumbSize = {400, 400};
scaleValue = 1.0;
gb = Graph Builder(
Size( 604, 492 ),
Variables( X( :Mois ), Y( :"A"n ) ),
Elements( Points( X, Y, Legend( 4 ) ) )
);
gb = Graph Builder(
Size( 604, 492 ),
Variables( X( :Semaine ), Y( :B ), Group X( :Produit ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) )
);
frames = (gb << report) << xpath( "//FrameBox" );
Show( N Items( frames ) );
frames << Set Graphlet(
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
img = Open( fileName, "jpg" );
img << scale( scaleValue );
img;
)
),
//Thumbnail( thumbSize )
);
首先,我沒有在腳本中放入“縮圖”,因為其他用戶有JMP 15。 影像在標準尺寸縮圖 (170 x 200) 中仍然顯示得很好。 「scalevalue」用於當您點擊縮圖時顯示一定尺寸的照片? 就是這樣 ?
然後,我編寫了一個腳本來產生兩個圖表
圖像僅出現在第二個(多部分)圖形的標籤中,而不出現在第一個圖形上。
然而,在我的第二張圖中,縮圖問題得到了解決,我的所有部分的標籤中都有圖像。
我想找到一種方法,將腳本的最後部分(在標籤中顯示照片)用於所有先前的圖形(實際上不只 2 個),以便照片位於所有圖形的縮圖中。 是否可以 ?
謝謝
祝你有美好的一天
回覆:懸停標籤JMP16 唯一特有的是 Thumbnail() 屬性,該屬性可讓您縮小縮圖。
我懷疑,透過新的方式,我們在單擊顯示圖像之前縮小圖像,您可能不需要它。
回覆:懸停標籤好的,我會嘗試您的腳本將其應用到我的其他圖形!
另一方面,我不明白什麼在 JMP 16 上有效,而在 JMP 15 上無效? 你能解釋一下嗎?
事實上,我正在測試 JMP 16 EA,但其他用戶有 JMP 15,所以我需要一個與 JMP 15 配合使用的腳本...
謝謝
祝你有美好的一天
回覆:懸停標籤再一次問好, @艾瑪1 !
我很高興縮圖大小設定現在可以為您工作,很抱歉我沒有給您完整的範例。 但你想通了,幹得好!
只是提醒其他讀者,此設定是在 16.0 中添加的,所以我猜您使用的是 Early Adopter 版本。
至於點擊時顯示的圖像太大,請繼續閱讀,我在下面的腳本中添加了解決方案。
關於在使用分組變數的圖表中設定圖像顯示圖基元,您已經猜到了這個問題。 在幕後,每個面板(或我們所說的框架)上的圖形都是單獨的圖形,dispatchReport 指令僅配置第一個圖形。
一個簡單的解決方法是使用 XPath 來尋找複合圖中的所有框架:
gb = dt << Graph Builder( ... );
frames = (gb << report) << xpath("//FrameBox");
Show(NItems(frames)); // one frame(graph) per panel
框架引用被捕獲在列表中。 現在,我們可以透過向清單發送 setGraphlet 訊息(實際上是任何訊息)來一次配置所有這些訊息,清單會將訊息「廣播」給其成員:
frames << Set Graphlet( ... );
完整的腳本附在下面。 請注意我們如何使用scale() 訊息來更改圖像的大小(我將其放大,您可能希望將其縮小),然後再將其傳回以在您單擊縮圖時由 JMP 顯示(該圖像仍然是使用由Thumbnail() 屬性決定的大小)。
img = Open( fileName, "jpg" );
img << scale( scaleValue );
如果您想在按一下縮圖時顯示不同的映像,或執行不同的動作(開啟網頁或執行腳本),您可以將 JSL 片段傳遞給名為 Click() 的 setGraphlet() 屬性。
回覆:懸停標籤再一次問好 !
我嘗試“貼上”我的腳本以將照片顯示到其他圖形,但仍然有問題
當它的圖形帶有我們在頂部「分組」的變數時(如我發送給您的圖像),起司的照片僅顯示在左側部分,而不顯示在其他部分。
就好像 JMP 認為有兩個圖形並且僅在左側部分應用了腳本。

另外,我有一些圖表在“發送到報告”內有多個“調度”。
在這些情況下,我可以將起司照片的搜尋腳本放在哪裡,以便將其應用於我的整個圖片?
感謝您的幫助,並對所有這些問題表示歉意。
確實,第一次你幫了我很多...
回覆:懸停標籤你好,
我有另一個問題 :
該腳本僅適用於圖表(我在開始時建立的)
我有另一個腳本(更長),它允許您建立多個圖表並將它們顯示在同一視窗和不同選項卡中
我想將先前的腳本(當我們單擊一個點時顯示起司的照片)應用於我的所有其他圖形
是否有捷徑可尋?
謝謝
回覆:懸停標籤@nascif_jmp我成功了!
它必須放在「圖形產生器」之前
tX = 400;
tY = 400;
size = Eval List( {tX, tY} );
gb = Graph Builder( /* ... */ );
對於縮圖:
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
Open( fileName, "jpg" );
)
),
Thumbnail( size )
)}
)
)
再次感謝你的幫忙 !
祝你有美好的一天
回覆:懸停標籤你好,
我正在嘗試使用腳本來增加縮圖的大小
我在腳本的開頭添加了:
gb = Graph Builder(
tX = 400;
tY = 400;
size = Eval List( {tX, tY} );
Size( 531, 456 );,
Show Control Panel( 0 )
// ...
);
但是,當我像這樣在末尾添加“縮圖”時,它不再起作用:
gb = Graph Builder(
tX = 400;
tY = 400;
size = Eval List( {tX, tY} );
Size( 531, 456 );,
Show Control Panel( 0 ),
// ...
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Thumbnail( size ),
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
Open( fileName, "jpg" );
)
)
)},
)
)
);
我嘗試將“縮圖(大小)”設置到腳本中的其他位置,但無法增加大小,我認為我沒有將其放在正確的位置
最好直接點擊縮圖中的照片看大圖,但尺寸太大
祝你有美好的一天
謝謝
回覆:懸停標籤我很高興它成功了! 更何況看到如此美麗的起司! 
您可以將縮圖的大小新增至腳本。 新增到腳本的開頭:
tX = 400; tY = 400;
size = EvalList({tX, tY});然後在 setGraphlet 呼叫中新增(可能在 Picture 屬性之後)
Thumbnail( size )
另請注意,您可以選擇單擊縮圖以在單獨的視窗中以完整尺寸啟動圖像。
回覆:懸停標籤非常感謝您的幫助我成功了!
只是我的“cwd”路徑末尾缺少一個“/”
這是照片:

在我的螢幕截圖中,我在懸停標籤編輯器中增加了照片的大小,然後在「縮圖」標籤中增加了照片的大小
我設定寬度=高度=400,而一開始的寬度=200,高度=170
是否可以在腳本中添加此照片尺寸? 400×400?
或者腳本的每個使用者是否需要使用懸停標籤編輯器來更改此設定?
謝謝
回覆:懸停標籤你好@艾瑪1 ,
我向您保證,JMP 可以在 ID 和檔案名稱之間建立聯繫。 但我們必須為其提供足夠的資訊才能做到這一點。
您是否定義了「cwd」變數來指向檔案所在的資料夾? 「開啟」指令需要完整的檔案名稱。
在建立圖形產生器實例之前,請在腳本的開頭新增一個表達式,將 cwd 定義為具有映像資料夾路徑的字串。
就像是:
Names Default to Here(1);
cwd = "C:/myProject/myImages/"; //CHANGE THE PATH TO MATCH YOUR IMAGE FOLDER
gb = Graph Builder( ...
在我共享的原始範例中,我使用當前目錄(加載腳本的目錄)定義“cwd”,因為在我的情況下,圖像資料夾與腳本位於同一目錄中。 這可能適合也可能不適合您。 如果直接指定圖片資料夾路徑會更簡單。
另外,不要忘記使用 Show() 並檢查日誌以確保檔案名稱是您期望的名稱。
你太近了! 我期待看到懸停標籤的螢幕截圖,其中包含您的圖像之一!
回覆:懸停標籤你好
我嘗試了你的程式碼行:
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
Open( fileName, "jpg" );
)
)
)}
)
)
不幸的是,它仍然不起作用。 我的懸停標籤中仍然有一個十字架。
JMP 不會在我的列名稱和電腦資料夾中的映像名之間建立聯繫。
我還嘗試更改名稱“Quantième+n°cuve”以放置一個更簡單的名稱(“id”),同時更改資料庫中的列名稱,但它仍然不起作用。
感謝您的協助
回覆:懸停標籤叉號表示載入檔失敗。 所以我們還沒有正確產生檔案名稱。
是時候進行一些調試了。
嘗試這個:
圖片(圖片框(
檔名 = cwd || :姓名( “Quantième +n°cuve”) [本地:_firstRow] || “.jpg”;
顯示(檔名);
打開( 檔名, “jpg” ))
),
然後將滑鼠懸停在某個點上後檢查 JMP 日誌。 確保列印的檔案名稱與資料夾中的影像檔案名稱相符。
另請注意我如何更改引用列名稱的方式,您必須對包含無效 JSL 名稱字元(如該字元)的列名稱使用 Name() 函數。 這一改變實際上可能會解決這個問題。
回覆:懸停標籤好的,非常感謝!
現在,我有這個:

我的腳本的最後一行是:
Picture(PictureBox(Open( cwd || :"Quantième +n°cuve"[local:_firstRow] || ".jpg", "jpg"))),
現在,我的懸停標籤上有一個十字架...
你能幫我嗎 ?
謝謝
回覆:懸停標籤好吧,讓我們來看看:
>> 我應用了您告訴我的內容,但是當我單擊一個點時,懸停標籤不會顯示,只會打開我計算機中的照片文件。
顧名思義,當您將滑鼠懸停或將滑鼠懸停在圖表中的標記上時(而不是單擊它時),就會顯示懸停標籤(JMP 的名稱,通常稱為工具提示)。 顯示懸停標籤後 - 如果一切順利,它應該包含圖像檔案的縮圖 - 您可以單擊圖像執行其他操作,例如在新的 JMP 視窗中開啟圖像。
>> 在我的腳本的最後一行:“Picture (PictureBox (Open (cwd," \ .jpg "))),”
上面的 open 指令有兩個問題:
1) 在第一個參數缺少在表行中建立對應檔案名稱的值。 它正在嘗試打開一個資料夾,而不是圖像檔案。
2)第二個參數,告訴 open 指令如何讀取檔案資料的類型修飾符,應該只是「jpg」。
回想一下,這是我之前發布的範例中的開啟命令:
Picture(PictureBox(Open( cwd || local:_Species || ".jpg", "jpg"))),
請注意它如何使用局部變數(“local:_Species”)來建立檔案名稱以符合您的觀察結果。 我相信您的數據表中有類似的列。 為標記列自動建立儲存目前視覺標記對應值的局部變數。 如果資料表中與檔案名稱相符的資料列未標記,您仍然可以透過使用局部變數「local:_firstRow」作為索引的直接列參考來取得其值。 它看起來像這樣:
Picture(PictureBox(Open( cwd || :species[local:_firstRow] || ".jpg", "jpg"))),
這些局部變數被定義為懸停標籤執行上下文。
>> 在此步驟中是否可以指定開啟我的照片資料夾和資料庫中的某一列中具有相同名稱的點的照片? 要將此列中的名稱連結到我的電腦資料夾中的圖像名稱嗎?
是的。 我們非常接近讓它發揮作用。 
回覆:懸停標籤好的謝謝 !
我應用了您告訴我的內容,但是當我單擊一個點時,懸停標籤不會顯示,只會打開我計算機中的照片檔案。
在我的腳本的最後一行:“Picture (PictureBox (Open (cwd," \ .jpg "))),”
在此步驟中是否可以指定開啟我的照片資料夾和資料庫中的某一列中具有相同名稱的點的照片? 要將此列中的名稱連結到我的電腦資料夾中的圖像名稱嗎?
謝謝
回覆:懸停標籤@艾瑪1 ,
我在回覆中作為範例發布的腳本顯示如何將懸停標籤內的圖像顯示為您所描述的縮圖。
它確實從磁碟讀取映像,而不是從網路讀取映像。
「開啟」功能儘管名稱如此,但不會開啟資料夾。 它會載入圖像並將其傳遞給圖片框,它會縮小並在懸停標籤內顯示為縮圖。
單擊事件時圖像在瀏覽器上的顯示是可選的。 如果您不需要,可以從腳本中刪除「Click」屬性。
在這種情況下,按一下縮圖將在常規 JMP 視窗中顯示影像。
回覆:懸停標籤非常感謝兩位的回答@哈德利邁爾斯和@nascif_jmp 。
我已經閱讀了 Iris 的文章並嘗試了該腳本。
但是,我不想引用網絡鏈接,而是引用資料夾中的圖像。
它不應該出現在我的腳本中的網絡鏈接,而是查找特定照片的鏈接
此外,不需要使用腳本中的「開啟」功能來開啟照片資料夾,只需將該照片顯示在懸停標籤中即可
回覆:懸停標籤我比我建議的更喜歡這個。
回覆:懸停標籤你好@艾瑪1 ,
這可以使用 Graphlets(JMP 15.0 中新增的懸停標籤擴充)來完成。您將需要一些 JSL 來告訴 JMP 如何根據圖像列的值來尋找圖像檔案。 下面的範例說明了該方法,使用鳶尾花資料集並從相應的物種派生圖像檔案名稱。 作為獎勵,它展示了當您單擊懸停標籤縮圖時如何在瀏覽器視窗中打開照片。
您也可以使用懸停標籤編輯器來實現相同的技術,只需較少的編碼(您只需要提供下面的“圖片”和“單擊”(可選)屬性的內容。
更多詳細資訊請參閱我們的文件.
還檢查維基閱讀器文件交換腳本,用於顯示來自 Web API(在本例中為維基百科)的圖像(和文字)的範例。
// Uses Graphlet to display flower image as thumbnail, click to open in browser
Names Default to Here(1);
cwd = Get Default Directory();
dt = Open("$SAMPLE_DATA/Iris.jmp");
gb = dt <<
Graph Builder(
Size( 531, 456 ),
Show Control Panel( 0 ),
Variables( X( :Petal length ), Y( :Sepal length ), Color( :Species ) ),
Elements( Points( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(PictureBox(Open( cwd || local:_Species || ".jpg", "jpg"))),
Click(Web( "file://" || cwd || local:_Species || ".jpg" ))
)}
)
)
);
回覆:懸停標籤你好,
這是一個非常有趣的請求!我能想到的一種可能的方法是使用腳本來1)創建一個新列,2)將該圖片插入該列中文件名與另一列中的值匹配的行,3)將圖片顯示為懸停標籤。這樣,只有將滑鼠懸停在點上時,圖片才會添加到表格中。您可以在腳本的開頭新增一行,在建立新圖片列之前刪除該圖片列(如果存在),從而確保一次僅將一張圖片插入到表中。這聽起來可行嗎?