ฉันมีฐานข้อมูลที่ประกอบด้วยภาษาลองจิจูดและละติจูดและค่าคุณสมบัติ (ทั้งประเภท 1, ประเภท 2 หรือทั้งสองอย่าง - ในพล็อตเหล่านี้จะมีสีแดงน้ำเงินและเขียวตามลำดับ) อาจมีมากถึงสามจุดต่อภาษาและโดยปกติแล้วคะแนนภาษาสองจุดอาจอยู่ใกล้กันมาก
name longitude latitude sp_sum
1 Modern Armenian 45 40 both
2 Modern Armenian 45 40 both
3 Modern Armenian 45 40 spatial
4 Dieri 138 -28.1667 both
5 Dieri 138 -28.1667 both
6 Finnish 25.5577 64.7628 non-spatial
7 Crimean Tatar 28.1418 43.8398 spatial
8 Ese Ejja -67.515 -11.7268 non-spatial
9 Makhuwa 38.8052 -14.8509 non-spatial
...
ฉันใช้ Rg แพ็คเกจ ggplot2 (นั่นคือสิ่งที่ฉันคุ้นเคยมากที่สุดดังนั้นฉันยินดีที่จะใช้มันต่อไป - แต่ก็ยินดีต้อนรับโซลูชันอื่น ๆ ด้วย) นี่คือการครอบตัดจากความพยายามก่อนหน้า (รหัส: ดูด้านล่าง1 ):
สำหรับทุกจุดฉันต้องการตำแหน่ง (หยาบ) - รวมถึงค่า - ยังสามารถมองเห็นได้ (หากมีหลายจุดสำหรับภาษาเดียวอาจรวมกันได้)
มีวิธีใดบ้าง ...
- ... เพื่อย้ายจุดไปด้านข้างมากพอที่จะไม่มีการ overplotting (สุ่มน้อยกว่าพูดโดยใช้ geom_jitter - มีจำนวนมากแบบนั้นหลบในแพ็คเกจbeeswarm )?
- ... และ / หรือมี "เส้น" บางชนิดที่ชี้ไปที่ตำแหน่งเดิมของจุดถ้าต้องย้ายหรือไม่
- ... หรือเพื่อรวมคะแนนแบบใกล้ชิดในแบบที่พวกเขายังคงชัดเจน (อาจมีเทคนิคการทำงานออกมีที่ใช้ binning เช่น stat_bin * หรือสิ่งที่มีผลที่คล้ายกัน)?
... หรือเพื่อสร้าง "แผนแบบโต้ตอบ" เหมือนที่เห็นบนเว็บไซต์ที่ยังสามารถรวมอยู่ในรูปแบบ pdf ได้ (ฉันกำลังคิดถึงความสามารถของแพ็คเกจเช่นภาพเคลื่อนไหวและเงาที่นี่) ตัวอย่างเช่นมีลักษณะเช่นนี้ในwals.info :
จากโพสต์ก่อนหน้านี้ที่นี่ฉันรู้ว่าแพคเกจdirectlabelsสามารถย้ายป้ายกำกับได้ แต่ฉันไม่พบวิธีที่จะทำให้ได้คะแนนเช่นกัน
อย่าลังเลที่จะขอคำชี้แจง!
หมายเหตุ: ฉันทราบดีว่ามีคำถามมากมายเกี่ยวกับการ overplotting แต่คำถามที่ฉันได้ตรวจสอบทั้งหมดดูเหมือนจะมีจุดประสงค์ที่แตกต่างกัน (เช่นสถิติ) (ฉันไม่ได้อ้างว่าได้อ่านมันทั้งหมดดังนั้นฉันจึง ' ยินดีที่จะยอมรับการเชื่อมโยงเช่นกันแน่นอน) ฉันจะพยายามแสดงรายการโพสต์ที่ฉันรู้และอาจเกี่ยวข้อง (- จากสิ่งที่ฉันอ่านไม่มีคำตอบที่ตรงกับคำถามของฉัน)
- stats.SE: ฉันจะหลีกเลี่ยงป้ายกำกับที่ทับซ้อนกันในพล็อต R ได้อย่างไร
- ดังนั้น: เลเบลจุดข้อมูลแบบไดนามิกการจัดตำแหน่งใน ggmap
1รหัสต่อไปนี้สร้างการครอบตัดจากด้านบน
library(OpenStreetMap)
library(ggplot2)
data <- read.csv(header = T, sep = ",", dec = ".", quote= "'",
text = "'','name','longitude','latitude','sp_sum'
'1','Modern Armenian',45,40,'both'
'2','Modern Armenian',45,40,'both'
'3','Modern Armenian',45,40,'spatial'
'4','Dieri',138,-28.1667,'both'
'5','Dieri',138,-28.1667,'both'
'6','Finnish',25.5577,64.7628,'non-spatial'
'7','Crimean Tatar',28.1418,43.8398,'spatial'
'8','Sochiapam Chinantec',-96.6079,17.7985,'non-spatial'
'9','Ese Ejja',-67.515,-11.7268,'non-spatial'
'10','Makhuwa',38.8052,-14.8509,'non-spatial'
'11','Mualang',111.077,0.31083,'non-spatial'
'12','Martuthunira',116.607,-20.9294,'non-spatial'
'13','Evenki',108.626,53.85,'both'
'14','Afrikaans',30,-22,'both'
'15','Male (Ethiopia)',36.9892,5.91975,'both'
'16','Manchu',126.557,47.3122,'both'
'17','Dime',36.3329,6.20951,'non-spatial'
'18','Koorete',37.8679,5.80545,'non-spatial'
'19','Wolaytta',37.7537,6.32668,'both'
'20','Dizin',35.5763,6.1405,'both'")
map <- openproj(openmap(c(85, -179.9), c(-60, 179.9), zoom = 2, type = "nps"))
plot <- autoplot(map) +
geom_point(data = data, aes(x = longitude, y = latitude),
color = "white", alpha = 0.8, size = 8) +
geom_point(data = data, aes(x = longitude, y = latitude, color = sp_sum),
alpha = 0.3, size = 4)
plot