gpt4 book ai didi

r - 更改 ggplot2 中标记的厚度

转载 作者:行者123 更新时间:2023-12-04 12:35:17 24 4
gpt4 key购买 nike

我正在使用以下代码制作一个带有与外部特征(总计)成比例点的 map ,但我想更改标记的宽度。

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

最佳答案

是您要更改的空心点边界的厚度吗?可以用 grid.edit 来完成来自 grid包裹。

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

编辑 获取图例键以匹配点
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))

关于r - 更改 ggplot2 中标记的厚度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com