亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

R中的智能點標簽放置

R中的智能點標簽放置

胡子哥哥 2019-08-30 16:19:38
1)是否有任何R庫/函數可以在R圖中實現INTELLIGENT標簽放置?我嘗試了一些,但它們都有問題 - 許多標簽彼此重疊或其他點(或圖中的其他對象,但我發現這更難處理)。2)如果沒有,有什么方法可以如何舒適地幫助算法與特定問題點的標簽放置?最舒適,最有效的解決方案。您可以使用我可重復的示例來玩和測試其他可能性,看看您是否能夠取得比我更好的結果:# datax = c(0.8846, 1.1554, 0.9317, 0.9703, 0.9053, 0.9454, 1.0146, 0.9012, 0.9055, 1.3307)y = c(0.9828, 1.0329, 0.931, 1.3794, 0.9273, 0.9605, 1.0259, 0.9542, 0.9717, 0.9357)ShortSci = c("MotAlb", "PruMod", "EriRub", "LusMeg", "PhoOch", "PhoPho", "SaxRub", "TurMer", "TurPil", "TurPhi")# basic plotplot(x, y, asp=1)abline(h = 1, col = "green")abline(v = 1, col = "green")為了標記,我嘗試了這些可能性,沒有人真的很好:1)這個很可怕:text(x, y, labels = ShortSci, cex= 0.7, offset = 10)2)如果您不想為所有點放置標簽,但僅針對異常值,這一點很好,但是,標簽通常也是錯誤的:identify(x, y, labels = ShortSci, cex = 0.7)3)這個看起來很有意思但是標簽太靠近點了; 我不得不用空格填充它們,但這沒有多大幫助:require(maptools)pointLabel(x, y, labels = paste("  ", ShortSci, "  ", sep=""), cex=0.7)4)require(plotrix)thigmophobe.labels(x, y, labels = ShortSci, cex=0.7, offset=0.5)5)require(calibrate)textxy(x, y, labs=ShortSci, cx=0.7)先感謝您!
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

首先,這是我解決這個問題的結果:

我在幾分鐘內手動預覽(OS X上非常基本的PDF /圖像查看器)。(編輯:工作流程正是您所期望的:我將圖表保存為R中的PDF,在預覽中打開它并創建帶有所需標簽的文本框(9pt Helvetica),然后用鼠標拖動它們直到它們看起來好的。然后我導出到PNG上傳到SO。)


現在,在你屈服于迫切要求將其投入遺忘的強烈沖動之前,請留下關于如何自動完成這一過程的諷刺評論,請聽我說!


尋找算法解決方案是完全正常的,(恕我直言)真的很有趣。但是,對我來說,點標簽情況大致分為三類:


你有少量的積分,沒有一點非常接近。在這種情況下,您在問題中列出的解決方案之一可能只需要很少的調整。

您有少量的點,其中一些點太緊密,無法為典型的算法解決方案提供良好的結果。在這種情況下,因為你只有少量的點,由專人標記他們(或者與圖像編輯器或微調您的來電text)不是那個很大的努力。

你有相當多的積分。在這種情況下,你真的不應該標記它們,因為很難在視覺上處理大量的標簽。

:爬上肥皂盒:


由于像我們這樣的人喜歡自動化,我認為我們經常陷入這樣一個陷阱,即認為生成一個好的統計圖形幾乎每個方面都應該是自動化的。我恭敬地(謙卑地?。┎煌狻?/p>


沒有完美的通用統計繪圖環境可以自動創建您腦海中的圖片。像R,ggplot2,格子等的東西做了大部分的工作; 但是額外的一點點調整,在這里添加一條線,調整邊距,可能更適合不同的工具。


:從肥皂箱爬下來:


我還要注意,我認為我們都可以得到<10-15分的散點圖,即使用手也幾乎不可能清晰地標記,這些可能會破壞任何人提出的自動解決方案。


最后,我想重申一下,我知道這不是你正在尋找的答案。而且我并不是說算法嘗試是無用的或愚蠢的。我對這個問題進行了投票,并樂意提出有趣的算法解決方案!


我發布這個答案的原因是我認為這個問題應該是規范的“R中的點標記”問題,以備將來重復使用,我認為涉及手工標簽的解決方案應該在桌面上占有一席之地,就是這樣。


查看完整回答
反對 回復 2019-08-30
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

我找到了一些解決方案 它不是終極和理想的不幸,但它是現在最適合我的那個。它是半算法,半手動,因此與joran描繪的純手動解決方案相比,它節省了時間。


我忽略了非常重要的?identify幫助部分!


如果在那里指定pos,則用于放置標簽的算法與文本使用的算法相同,不同之處在于指針相對于所識別的點的位置確定了標識中的pos。


因此,如果您identify()在我的問題中使用解決方案,那么您可以通過不直接點擊該點來影響標簽的位置,而是通過相對于所需方向點擊該點旁邊的!!! 工作得很好!


缺點是只有4個位置(頂部,左側,底部,右側),但我更欣賞其他4個位置(左上角,右上角,左下角,右下角)......所以我使用它來標記它不會打擾我的點以及我在我的Powerpoint演示中直接標記的其余點,正如joran提出的那樣:-)


PS:我還沒有嘗試過directlabels lattice / ggplot解決方案,我還是喜歡使用基本的繪圖庫。


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 748 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號