ฉันจะหลีกเลี่ยงการซ้อนฉลากในพล็อต R ได้อย่างไร [ปิด]


44

ฉันพยายามติดป้ายกระจายภาพง่าย ๆ ใน R. นี่คือสิ่งที่ฉันใช้:

plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)

ผลที่ได้คือปานกลางตามที่คุณเห็น (คลิกเพื่อดูภาพขยาย):

ป้อนคำอธิบายรูปภาพที่นี่

ผมพยายามที่จะชดเชยการนี้โดยใช้textxyฟังก์ชั่น แต่ก็ไม่ดีขึ้น การทำให้ภาพใหญ่ขึ้นไม่สามารถใช้กับกลุ่มที่หนาแน่น

มีฟังก์ชั่นหรือวิธีง่าย ๆ ในการชดเชยสิ่งนี้และปล่อยให้ R plot label ที่ไม่ทับซ้อนกันหรือไม่?


นี่เป็นส่วนย่อยของข้อมูลที่ฉันมี:

Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205

1
ฉันโพสต์คำถามที่คล้ายกันที่นี่ดูคำตอบที่นั่น ..
อยากรู้อยากเห็น

3
ฉันพบทางออก ! identify()ให้ของคุณด้วยตนเองตัดสินใจที่จะวางฉลาก! มันไม่เหมาะ แต่จากโซลูชันที่เสนอนี้ใช้งานได้ดีที่สุดสำหรับฉัน
อยากรู้อยากเห็น

คำตอบ:


29

ตรวจสอบแพคเกจใหม่ggrepel ggrepel จัดเตรียม geoms สำหรับ ggplot2 เพื่อขับไล่ฉลากข้อความที่ทับซ้อนกัน มันทำงานได้ทั้งสำหรับ geom_text และ geom_label

ป้อนคำอธิบายรูปภาพที่นี่

รูปที่นำมาจากโพสต์บล็อกนี้


19

directlabelsแพคเกจไม่ว่า จากหน้าเว็บ :

แพคเกจนี้เป็นความพยายามที่จะทำให้การติดฉลากโดยตรงเป็นจริงในการฝึกฝนเชิงสถิติในชีวิตประจำวันโดยการทำให้มีฟังก์ชั่นที่มีประโยชน์ที่ทำให้การติดฉลากโดยตรงของแผนการทั่วไปง่ายต่อการทำกับระบบการวางแผนระดับสูงเช่น lattice และ ggplot2

แม้ว่ามันอาจจะเป็นไปไม่ได้สำหรับแผนการที่หนาแน่น

นี่เป็นตัวอย่างสั้น ๆ :

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

ฉันจัดการกำจัดจุดระบายสีด้วยcol="black"แต่ไม่ใช่ป้ายกำกับ


1
ฉันมีปัญหาในการทำให้มันใช้งานได้ คุณอาจจะให้ตัวอย่างการทำงานง่ายๆ
slhck

1
ในกรณีของคุณสิ่งที่ต้องการdirect.label(xyplot(SI~TI,data=yourDataFrame,group=Name))ควรได้ผลลัพธ์ที่คล้ายกัน
Laurent

สมบูรณ์ นี่คือสิ่งที่ฉันลงเอยด้วยการใช้ตัวอย่างง่ายๆของคุณ ป้ายกำกับและจุดสีนั้นดีมากเนื่องจากคุณทราบว่ามีป้ายกำกับนั้นอยู่ที่ไหน
slhck

1
ฉันต้องใช้library(lattice)เพื่อxyplotไปทำงาน
David J. Harris

14

ฉันขอแนะนำให้คุณดูwordcloudแพ็คเกจ ฉันรู้ว่าแพคเกจนี้ไม่ได้มุ่งเน้นไปที่จุด แต่บนฉลากตัวเองและสไตล์ที่ดูเหมือนจะค่อนข้างคงที่ แต่ถึงอย่างนั้นผลลัพธ์ที่ฉันได้จากการใช้มันก็ค่อนข้างน่าทึ่ง นอกจากนี้โปรดทราบว่าเวอร์ชันของแพ็คเกจที่เป็นปัญหานั้นออกมาในเวลาที่คุณถามคำถามดังนั้นมันจึงยังใหม่อยู่

http://blog.fellstat.com/?cat=11

เอาท์พุท textplot ()


9

ฉันพบปัญหาคล้ายกันกับหลาย ๆ แปลงที่ฉันทำงานด้วยและเขียนแพ็คเกจพื้นฐานที่ใช้การจำลองฟิลด์บังคับเพื่อปรับตำแหน่งของวัตถุ ข้อได้เปรียบเหนือโซลูชันที่อ้างถึงข้างต้นบางส่วนคือการปรับแบบไดนามิกสำหรับความสัมพันธ์ของวัตถุใน 2D ในขณะที่การปรับปรุงเป็นไปได้มากรวมถึงการวิเคราะห์พฤติกรรมและการทำงานร่วมกับ ggplot ฯลฯ ดูเหมือนว่าจะทำให้งานสำเร็จลุล่วงได้ ต่อไปนี้แสดงให้เห็นถึงการทำงาน:

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

สำหรับตอนนี้ไม่มีการวิเคราะห์พฤติกรรมสำหรับพื้นที่และการแจกแจงแบบจุดต่าง ๆ เนื่องจากวิธีการแก้ปัญหาตรงตามความต้องการของฉันและฉันต้องการที่จะได้รับประโยชน์จากผู้คนอย่างรวดเร็ว แต่ฉันจะเพิ่มสิ่งเหล่านี้ในระยะกลาง ในเวลานี้ฉันขอแนะนำให้ปรับแผนภูมิเป็น 100x100 และย้อนกลับและปรับแต่งพารามิเตอร์การดึงดูดและค่าเข้าชมเป็นค่าเริ่มต้นเล็กน้อยตามที่รับประกัน


8

ในกรณีที่คุณไม่สามารถทำให้ป้ายกำกับทำงานได้อย่างถูกต้องตามที่ผลิตโดย R โปรดทราบว่าคุณสามารถบันทึกกราฟในรูปแบบเวกเตอร์ (เช่น. pdf) และดึงลงในโปรแกรมแก้ไขเช่น InkScape หรือ Adobe Illustrator


8

เครื่องมือเพิ่มเติมสองสามอย่างที่ต้องดูใน R:

  • spread.labelsฟังก์ชั่นในplotrixแพคเกจ
  • thigmophobe.labelsในplotrixแพคเกจ
  • spread.labsฟังก์ชั่นในTeachingDemosแพคเกจ
  • TkIdentifyฟังก์ชั่นในTeachingDemosแพคเกจ

สิ่งเหล่านี้จะไม่ทำทุกอย่างให้คุณ แต่หนึ่งในนั้นอาจเป็นส่วนหนึ่งของการแก้ปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.