我正在使用HTML小部件在RStudio中处理R Markdown文档(*.Rmd)。我有一个由传单包中的函数创建的地图,其中包括由addLegend()函数创建的图例。然后是d3heatmap软件包的d3heatmap()函数创建的热图。当我使用“运行所有块”运行代码时,显示在“查看器”窗格中的输出看起来不错。当我使用Knit HTML运行代码时,弹出窗口中显示的输出缺少图例。

即使后来显示热图,我该怎么做才能使图例显示在地图上?

下面是一个示例,您可以自己尝试。它基于http://rstudio.github.io/leaflet/legends.html,需要您从http://data.okfn.org/data/datasets/geo-boundaries-world-110m下载country.geojson数据。

在本示例中使用Knit HTML,如果我使用{r, eval=TRUE}包括热图,则传单地图上没有图例。如果我使用{r, eval=FALSE}排除热图,则传单地图上会有图例。

我正在使用R版本3.2.3(2015-12-10),平台:x86_64-w64-mingw32 / x64(64位),在以下环境下运行:Windows 7 x64(内部版本7601)Service Pack 1,带有RStudio
版本0.99.491和软件包d3heatmap_0.6.1,rgdal_1.1-3,sp_1.2-1和leaflet_1.0.0。

---
title: "Testing"
output:
  html_document: default
---

Some text.

```{r, message=FALSE}
library(leaflet)
library(rgdal)

countries <- readOGR("json/countries.geojson", "OGRGeoJSON",
  verbose=FALSE)

map <- leaflet(countries) %>% addTiles()
pal <- colorNumeric(
  palette = "YlGnBu",
  domain = countries$gdp_md_est)
map %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.2, fillOpacity = 1,
    color = ~pal(gdp_md_est)) %>%
  addLegend("bottomright", pal = pal, values = ~gdp_md_est,
    title = "Est. GDP (2010)",
    labFormat = labelFormat(prefix = "$"),
    opacity = 1)
```

Some text.

```{r, eval=TRUE}
library(d3heatmap)
d3heatmap(mtcars)
```

最佳答案

小叶和d3heatmap都共享一个名为.info的CSS类。
当我取消选中.info的css选项时,您将再次看到图例。

您必须使用className参数手动重新分配CSS类,如下所示:
addLegend("bottomright", className = "legendbox", pal = pal, values = ~gdp_md_est,

您将必须为新类附加其他CSS设置。

r - R Markdown中的leaflet()之后的d3heatmap()导致addLegend()消失-LMLPHP

08-16 07:09