gpt4 book ai didi

r - 绘图可视化对于美国县 map 来说太慢了

转载 作者:行者123 更新时间:2023-12-01 08:07:01 25 4
gpt4 key购买 nike

我的数据集有大约 90K 行和以下列

state_name, county_name, county_lat, count_long, value_x

仅针对加利福尼亚县的类似直接示例 here

虽然它适用于一个状态,但当我为美国的所有州这样做时,当我尝试放大和缩小时, plotly 很慢,而且悬停数据需要时间加载。 plotly 生成本身需要一些时间

有什么解决方案可以克服这种滞后吗?如果没有,是否有类似 plotly 的交互图具有悬停和缩放功能以及视觉上丰富多彩的 map 绘制?

最佳答案

这里的部分问题似乎是 plotly R API 似乎不支持在多边形特征上使用不同颜色的填充和边框。

您可能能够做出的一个权衡是接受无法独立修改线条颜色以避免将每个多边形绘制两次的事实。通过不绘制仅线条轨迹,悬停信息工作得非常顺利,并重新 -对于这组具有 ~88,000 个顶点的多边形,缩放渲染速度略有提高。

没有额外行跟踪的方法的结果 .html 输出文件(Web 浏览器交互所需的处理量的适当代理)在磁盘上为 7.7 MB,而如果您使用示例中的方法,则为 12.1 MB。

然而,审美差异是显着的,对于许多人来说可能不是一个可以接受的权衡。

我知道其中许多功能仍处于早期阶段,因此也许一些正在进行的工作迟早会导致此类情况的性能改进。

从 R 渲染时间方面来看,通过重写 plotly 在技术上有改进的余地。内部结构如 Map()tracify()使用 data.table比当前更快的排序 dplyr::arrange方法,它是 %chin%函数用于更快的字符匹配,但老实说,我认为这可能更多地属于过早优化的领域。由于浏览器呈现输出的时间比它更长 R要创建它,我认为这里的亚秒级渲染时间可能不是什么大问题。 (在 v4.6.0 更新后,R 端很容易在 1-2 秒内生成浏览器崩溃图。)

从 HTML 有效负载和 javascript 方面来看,我确信可以进行改进,但我不知道从哪里开始。

与此同时,一些不错的选择可能是使用 raster 尽可能地对您的数据进行下采样。包装和 shiny在服务器端处理繁重的工作,而不是在浏览器中,或研究其他工具。

生成数据

library(plotly)
library(data.table)

DT_counties <- setDT(map_data("county"))

## Islands of san juan in washington are represented by 2 groups and throw everything haywire
DT_counties <- DT_counties[!(region == "washington" & subregion == "san juan")]

## Create a coloring based on the raw number of vertices since we don't have population for all
DT_counties[,pop_cat := as.numeric(.N), by = .(group)]
DT_counties[,pop_cat := ordered(cut(pop_cat,10))]

渲染如示例:
DT_counties %>% 
group_by(group) %>%
plot_geo(x = ~long, y = ~lat, color = ~pop_cat,
text = ~subregion,
mode = "lines",
colors = c('#ffeda0','#f03b20'),
hoverinfo = 'text') %>%
add_polygons(line = list(width = 0.4)) %>%
add_polygons(
fillcolor = 'transparent',
line = list(color = 'black', width = 0.5),
showlegend = FALSE, hoverinfo = 'none'
) %>%
layout(title = "US Counties by Number of Vertices",
geo = list(scope = 'usa',
showland = TRUE,
landcolor = toRGB("gray95"),
countrycolor = toRGB("gray80"))) -> Example

htmlwidgets::saveWidget(Example,"tmp_Example.html")

渲染时不加倍多边形以获得黑线
DT_counties %>% 
group_by(group) %>%
plot_geo() %>%
add_polygons(x = ~long, y = ~lat, color = ~pop_cat,
text = ~subregion,
colors = c('#ffeda0','#f03b20'),
hoverinfo = 'text',line = list(width = 0.4)) %>%
layout(title = "US Counties by Number of Vertices",
geo = list(scope = 'usa',
showland = TRUE,
landcolor = toRGB("gray95"),
countrycolor = toRGB("gray80"))) -> Small

htmlwidgets::saveWidget(Small,"tmp_Small.html")

视觉比较

with and without line polygons

分析结果(这里的骨头上没有很多肉)

enter image description here

关于r - 绘图可视化对于美国县 map 来说太慢了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48921331/

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