gpt4 book ai didi

r - 在 R 的传单中,可以使用列变量来改变 labelOption 大小、颜色等的大小吗?

转载 作者:行者123 更新时间:2023-12-05 03:59:16 28 4
gpt4 key购买 nike

我正在尝试创建英国一小部分的高质量 map ,没有因使用投影而造成的任何扭曲,并且添加了由文本和符号组成的标记。最终目标是写出 png 或 pdf 文件。可以找到一个更早的相关问题 here .

我已经好几年没用过 R 了,我一直在一堆包中跋涉,试图找到合适的东西。 R 的 Leaflet 很有前途,但尽管我可以使用数据框中的列创建外观不错的 map 、添加标记并改变标记的颜色等,但我无法改变大小、颜色和文本labelOptions 参数中使用的偏移量。

Piccadilly with markers using Leaflet for R

以下可重现的示例显示了我可以实现的目标,以及我没有成功的地方。我希望文本标签的大小根据 df.data$textsizes 列而变化。考虑到 style 参数采用值对列表,这看起来很困难,到目前为止没有任何效果。

如果我希望有人可以建议一种让狡猾的 labelOptions 屈服于我的意愿的方法,或者一种完全不同的尝试方法。

require(leaflet)
require(magrittr)

df.entrynames <- c("Entry 1: Some text","Entry 2: More text")
df.lat <- c(51.509898,51.510736)
df.lon <- c(-0.1345093,-0.135190)
df.colors <-c("Blue","Red")
df.sizes <-c(36,12)
df.data <- data.frame(entrynames=df.entrynames,lat=df.lat,lon=df.lon,colors=df.colors,textsizes=df.sizes)
df.data$entrynames <- as.character(df.data$entrynames)
df.data$colors <- as.character(df.data$colors)
df.data$textsizes <- paste(df.data$textsizes,"px",sep="")

leaflet() %>% setView(lng = -0.134509, lat = 51.509898, zoom = 17) %>% addTiles() %>%
addCircleMarkers(data = df.data,
lat = ~lat, lng = ~lon,
label = df.data$entrynames,
color = df.data$colors,
labelOptions = labelOptions(noHide = TRUE,
style = list(
"color" = "gray30",
"font-family" = "serif",
"font-style" = "italic",
"box-shadow" = "3px 3px rgba(0,0,0,0.25)",
"font-size" = "14px",
"border-color" = "rgba(0,0,0,0.5)"
),
textOnly = FALSE,
offset=c(0,0)))

最佳答案

  df.entrynames <- c("Entry 1: Some text","Entry 2: More text")
df.lat <- c(51.509898,51.510736)
df.lon <- c(-0.1345093,-0.135190)
df.colors <-c("Blue","Red")
df.sizes <-c(36,2)
df.data <- data.frame(entrynames=df.entrynames,lat=df.lat,lon=df.lon,colors=df.colors,textsizes=df.sizes)
df.data$entrynames <- as.character(df.data$entrynames)
df.data$colors <- as.character(df.data$colors)
df.data$textsizes <- paste(df.data$textsizes,"px",sep="")
#Add a vector to split the data by
df.data$place<-seq(1:nrow(df.data))


library(purrr)

#split the data
ob_place <- df.data %>%
split(., .$place)
#make a map
m <- leaflet() %>%
addTiles()

#Add layers
names(ob_place) %>%
purrr::walk(function(df.data) {
m<<-m %>% #seems like there's supposed to be two carrots here, i had problems without one
addCircleMarkers(data=ob_place[[df.data]],fillColor=~colors,
fillOpacity = 0.6,
weight=1,
radius=13,
color="white",
opacity = .6,
lng=~lon, lat=~lat,
group = "Show All",
label = ~entrynames,
labelOptions = labelOptions(noHide = T,
#direction = ~MyDirection, #https://rstudio.github.io/leaflet/popups.html
textsize = ~textsizes,
#opacity=~opacity,
style = list(
"color"="black",
"font-family" ="sans-serif",
"box-shadow" = "3px 3px rgba(0,0,0,0.25)",
#"font-size" = "12px",
"border-color" = "rgba(0,0,0,0.5)"
)))

})
m

enter image description here

类似于设置 direction标签数

关于r - 在 R 的传单中,可以使用列变量来改变 labelOption 大小、颜色等的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332455/

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