2013-07-16 7 views
6

Bir çıkış karakteristiğine (Toplam) orantılı noktaları olan bir harita oluşturmak için aşağıdaki kodu kullanıyorum, ancak işaretçinin genişliğini değiştirmek istiyorum.Bir işaretçinin kalınlık değerini ggplot2 olarak değiştirin

p <- ggplot() 
p <- p + geom_polygon(data=all_states, aes(x=LONG*-1, y=LAT, group = ID),colour="black",    fill="white") 
p <- p + geom_point(data=mydata, aes(x=long*-1, y=lat, size = Total),color="mediumblue",  shape=1) + 
scale_size(range = c(1,11), name="Sells Volume")+ 
labs(title="Reglone SL")+ 
xlab(" ")+ 
ylab(" ") 
p 
+0

puan (http://stackoverflow.com/questions/5963269/ maç için almak için nasıl--make-a-büyük-r-tekrarlanabilir-örnek). – agstudy

+0

Ben agstudy katılıyorum. Lütfen ne demek istediğiyle ilgili daha fazla açıklama da ekleyin ... geom_point' tarafından üretilen markayı mı kastediyorsunuz? Onları zaten 'Toplam' değişkenine göre ölçeklendiriyorsunuz, yani hepsini daha büyük istiyor musunuz? Boyutlarını daha fazla değiştirmelerini istiyor musunuz? – Justin

cevap

16

Değiştirmek istediğiniz içi boş bir noktanın sınırının kalınlığı mı? grid.edit ile grid paketinden yapılabilir.

library(ggplot2) 
library(grid) 

ggplot(data = data.frame(x = 1:10, y = 1:10), aes(x=x, y=y)) + 
    geom_point(size = 10, shape = 1) 

grid.force() # To make the grobs visible to grid editing tools 

grid.edit("geom_point.points", grep = TRUE, gp = gpar(lwd = seq(1, 5.5, .5))) 

enter image description here

DÜZENLEME efsane tuşlar [tekrarlanabilir örnek yapmak] gerektiğini

library(ggplot2) 
library(grid) 
library(gtable) 

p = ggplot(data = data.frame(x = 1:10, y = 1:10, c = c(rep("a", 5), rep("b", 5))), 
    aes(x=x, y=y, colour = c)) + 
    geom_point(shape = 1, size = 10) 

lwd = 8 # Set line width 

g = ggplotGrob(p); dev.off() # Get the plot grob 

# Get the indices for the legend: t = top, r = right, ... 
indices <- c(subset(g$layout, name == "guide-box", select = t:r)) 

# Get the row number of the legend in the layout 
rn <- which(g$layout$name == "guide-box") 

# Extract the legend 
legend <- g$grobs[[rn]] 

# Get the legend keys 
pointGrobs = which(grepl("points", legend$grobs[[1]]$grobs)) 

# Check them out - no line width set 
# for (i in pointGrobs) str(legend$grobs[[1]]$grobs[[i]]) 

# Set line width 
for (i in pointGrobs) legend$grobs[[1]]$grobs[[i]]$gp$lwd = lwd 

# Check them out - line width set 
# for (i in pointGrobs) str(legend$grobs[[1]]$grobs[[i]]) 

# Put the modified legend back into the plot grob 
g = gtable_add_grob(g, legend, t=indices$t, l=indices$l) 

# g$grobs[[4]]$children[[2]]$gp$lwd = lwd # Alternative for setting lwd for points in the plot 

grid.newpage() 
grid.draw(g) 

grid.force() # To make the grobs visible to grid editing tools 

grid.edit("geom_point.points", grep = TRUE, gp = gpar(lwd = lwd)) 
+1

"grid.edit", "grid" paketinde " – baptiste

+2

" biçimindedir. Ggplot2 ile bir alternatif, iki katın üst üste gelmesidir: biri, artan çapa sahip doldurulmuş noktalar ve bir tanesi daha küçük noktalar ve gri dolgu ile. – baptiste

+0

Bu, yalnızca efsanedeki boyut değil, noktaların kalınlığını değiştirir. İkincisini eşleştirmek için ikincisini nasıl arttırabilirim? – wdkrnls