2013-04-17 132 views
0

下面的代碼會生成一個圖,其中點的大小與具有相同x和y值的個案數成正比。我怎樣才能增加點之間的空間,使它們不交叉或相互交叉?雖然以下示例使用虛假數據,但實際數據包含大約200個高度相交的點,因此難以察覺每個點。增加R圖中各點之間的距離

謝謝

索非亞

x = seq(1:10) 
    y = c(4,3.8,3.8,3.2,3.1,2.5,2,1.5,1.2,1.3) 
    size = c(7,20,2,70,100,70,5,80,110,2) 
    pdf("example.pdf") 
    par(mar=c(5,5,1.8,1.8)) 
    plot(y ~ x, cex = sqrt(size), pch = 1, 
     ylab="y", 
     xlab = "x",ylim=c(0,4), 
     cex.lab =1.8,cex.axis =1.3, 
     lwd = .5,type= "p", col="grey60") 
    dev.off() 
+0

使用例如'cex = 0.5 * sqrt(size)'? – eddi

+0

如果不移動斑點的中心,則不能增加間距,所以如其他答案已經提到,您需要調整斑點尺寸或圖形範圍的比例。我最喜歡的替代方法是分配一種具有部分透明度的顏色,例如'col =#00000020',以便重疊的點變得更暗和更暗,從而給出局部密度的指示。 –

回答

0

我會用ggplot2此:

df = data.frame(x = seq(1:10), 
       y = c(4,3.8,3.8,3.2,3.1,2.5,2,1.5,1.2,1.3), 
       size = c(7,20,2,70,100,70,5,80,110,2)) 

library(ggplot2) 
ggplot(df, aes(x = x, y = y, size = size)) + geom_point() 

enter image description here

ggplot2根據該值縮放地圖的區域size,它不直接使用size作爲cex。因此,重疊問題不存在,並且不需要手動調整cex

+0

謝謝大家! ggplot2很有幫助,但部分透明度也是一個不錯的選擇。最好的,索非亞 – user2291581

+0

嗨保羅,我決定去ggplot2。但是我還有最後一個問題:有沒有辦法讓不同大小的「大小」值不同的點的大小相似?否則,例如,「大小」中僅有1的情節將具有比「尺寸」也具有其他值的情節中的1大得多的點。再次感謝索非亞 – user2291581

+0

我認爲如果你問一個關於這個問題的新問題會更好。這使得其他用戶也更容易從任何答案中受益。 –

相關問題