在ggmap / ggplot中,如何以绝对值而不是相对值设置大小

问题描述 投票:2回答:1

在下面的简化示例中,size变量控制使用geom_path在地图上绘制的线的相对大小。

问题是显然大小不是以毫米为单位(如ggplot的文档中所示),但对于size变量中的任何两个或更多值,具有两个极值(min和max)的行以最小和最大宽度绘制,并且所有其他线在中间某处是离散的。

最大的宽度太宽,我想让它更薄。但由于大小似乎是相对于最小值/最大值而不是绝对值(毫米/像素值),我无法控制实际大小。

请在这里更改somevalue,看看地块之间没有任何变化。

library(ggmap)

base_layer <- get_googlemap(center = c(lon = 28.5, lat = 37) , zoom = 3 , maptype="roadmap" , size = c(640,640) , scale = 2 , color = "bw")

somevalue <- 3

df <- data.frame(
  group = c("g1","g1","g2","g2"), 
  size = c(1,1,somevalue,somevalue), 
  color = c("blue","blue", "red", "red"),
  lon = c(10,20,10,-10),
  lat = c(52,60,52,60)
)

ggmap(base_layer) + 
  geom_path(data = df, aes(x = lon, y = lat, alpha = 0.6, group = group, color = color, size = size))

r ggplot2 ggmap
1个回答
2
投票

您可以通过两种方式控制大小:

1)您可以使用scale_size_identity禁用自动重新缩放。

2)您可以使用range手动设置大小scale_size_continuous

选项1)将与您的数据值一起扩展,选项2)将不会。

这两个都给出了相同的情节:

ggmap(base_layer) + 
  geom_path(data = df, aes(x = lon, y = lat, group = group, color = color, size = size),
            alpha = 0.6) +
  scale_size_identity()

ggmap(base_layer) + 
  geom_path(data = df, aes(x = lon, y = lat, group = group, color = color, size = size),
            alpha = 0.6) +
  scale_size_continuous(range = c(1, 3))

enter image description here

附:请注意,当将alpha值设置为常量时,需要将aes值放在qazxswpoi之外。

© www.soinside.com 2019 - 2024. All rights reserved.