【问题标题】:In ggmap/ggplot, how to set size in absolute not relative values在 ggmap/ggplot 中,如何以绝对值而不是相对值设置大小
【发布时间】:2018-06-12 03:34:48
【问题描述】:

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

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

最大的宽度太宽了,我想把它做得更薄。但由于尺寸似乎是相对于最小值/最大值并且不是绝对值(毫米/像素),我无法控制实际尺寸。

请在此处更改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】:

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

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

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

    选项 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))
    

    附言请注意,当将alpha 值设置为常量时,需要将alpha置于aes 之外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 2013-12-10
      • 1970-01-01
      相关资源
      最近更新 更多