R传单连续图例中的相反顺序
我正在尝试反转我的R传单连续图例中的相反顺序,r,leaflet,legend,R,Leaflet,Legend,我正在尝试反转我的传单图例在R中的值显示。这包括分类数据,但我使用的是连续数据。下面是一个玩具示例: map <- leaflet() %>% addProviderTiles('Esri.WorldTopoMap') x <- 1:100 pal <- colorNumeric(c("#d7191c","#fdae61","#ffffbf","#abd9e9", "#2c7bb6"), x) map %>% addLegend('topright', pal=pa
传单
图例在R中的值显示。这包括分类数据,但我使用的是连续数据。下面是一个玩具示例:
map <- leaflet() %>% addProviderTiles('Esri.WorldTopoMap')
x <- 1:100
pal <- colorNumeric(c("#d7191c","#fdae61","#ffffbf","#abd9e9", "#2c7bb6"), x)
map %>% addLegend('topright', pal=pal, values=x)
map%addProviderTiles('Esri.WorldTopoMap')
x我刚刚发现内置的labelFormat
函数有一个transform
参数,它接受一个函数。因此我在那里传递了sort
函数。
用同样的例子来说
map %>% addLegend('topright',
pal = pal,
values = x,
labFormat = labelFormat(transform = function(x) sort(x, decreasing = TRUE)))
不幸的是,公认的答案会使数字与它们所代表的颜色不一致(事实上完全相反)
以下是最初提出的解决方案,我认为这是不正确的:
map <- leaflet() %>% addProviderTiles('Esri.WorldTopoMap')
x <- 1:100
pal <- colorNumeric(c("#d7191c","#fdae61","#ffffbf","#abd9e9", "#2c7bb6"), x)
map %>% addLegend('topright', pal=pal, values=x)
# This solution shows 100 as red
map %>% addLegend('topright',
pal = pal,
values = x,
labFormat = labelFormat(transform = function(x) sort(x, decreasing = TRUE)))
我认为解决方案是定义将颜色分配给数字的函数,一个用于图例,另一个用于实际绘制:
pal_rev <- colorNumeric(c("#d7191c","#fdae61","#ffffbf","#abd9e9", "#2c7bb6"), x, reverse = TRUE)
map %>% addLegend('topright',
pal = pal_rev,
values = x,
labFormat = labelFormat(transform = function(x) sort(x, decreasing = TRUE)))
pal\u版本%addLegend('topright'),
pal=pal_rev,
值=x,
labFormat=labelFormat(转换=函数(x)排序(x,递减=真)))
这为我们提供了一个与我们将绘制的任何内容相匹配的图例,ie 100现在正确显示为蓝色:
虽然接受的答案确实会翻转图例的颜色和标签,但地图的颜色与图例不对应。这里有一个(偷来的)解决方案。基本上创建了一个名为addLegend\u discreating
的新函数,该函数的工作原理与addLegend
完全相同,并带有一个额外的参数:discreating=FALSE
,该参数反转图例的颜色和标签,正确定位地图的颜色。以下是功能代码:
addLegend\u减少,除非我大错特错,否则由此产生的图例颠倒了标签,但没有颜色,因此它确实很长。您可以通过绘图(1:10,1:10,pch=19,cex=3,col=pal(100))来检查这一点。
显示x=100显示为蓝色,尽管图例上显示为红色。
pal_rev <- colorNumeric(c("#d7191c","#fdae61","#ffffbf","#abd9e9", "#2c7bb6"), x, reverse = TRUE)
map %>% addLegend('topright',
pal = pal_rev,
values = x,
labFormat = labelFormat(transform = function(x) sort(x, decreasing = TRUE)))