Change marker thickness in ggplot2

I use the following code to make a proportional point map to the outter (Total) characteristic, but I would like to change the width of the marker.

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 
+6
source share
1 answer

Is this the thickness of the border of the hollow point you want to change? This can be done using grid.edit from the grid package.

 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

EDIT To get legend keys corresponding to points

 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)) 
+16
source

Source: https://habr.com/ru/post/949564/


All Articles