我的目标是在一个面板中的绘图图形和第二个面板中的地图之间链接突出显示。出于我的目的,我想在一个面板中选择(突出显示)数据,并在两个面板中以红色突出显示所选数据,而不是使未选择的数据变暗。无论使用哪个面板来选择数据,这都应该有效。在下面,我有两种方法,两种方法都突出显示两个面板之间的数据,但突出显示颜色和调光存在功能问题。
方法A:在这种方法中,我用传单映射以避免mapbox。我也在使用,mode ='markers+lines'因为在我的真实数据中,数据点沿 x 轴的间距非常接近,并且将数据与线连接起来在视觉上很有帮助,尽管这会引入我在代码下面描述的功能问题。
library(plotly)
library(dplyr)
library(leaflet)
library(htmlwidgets)
library(crosstalk)
set.seed(1)
dat <- tibble(name = letters[1:21]
, latitude = seq(38.6,38.8,0.01)
, longitude = seq(-86.4,-86.8,-0.02)
, var.x = 1:21
, var.y = runif(21))
dat.a <- highlight_key(dat)
p <- plot_ly(dat.a) %>%
add_trace(x = ~var.x, y = ~var.y
, text = ~name
, alpha = 0.8
, mode = 'markers+lines', type = 'scatter'
, color = I("#1f77b4")
, showlegend = FALSE) %>%
highlight(on = "plotly_selected"
, off = "plotly_deselect"
, …Run Code Online (Sandbox Code Playgroud) 我有两个单调递增的向量,v1并且v2长度不等。对于每个值v1(例如v1[1], v1[2], ...),我想找到的价值v2,这只是小于v1[i]和计算的差异。
我当前的代码(见下文)工作正常,但似乎不能很好地扩展。所以我正在寻找建议来改进我的方法,要求留在 R 中,或者使用我可以从 R 调用的包。
示例代码:
v1 <- c(3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0)
v2 <- c(0, 2, 3.2, 4.6, 5.5, 7.1, 9.9, 12, 13)
myFunc <- function(x,v2) x - max(v2[x>=v2])
v3 <- sapply(as.list(v1), FUN = myFunc, v2)
cbind(v1,v3)
v1 v3
[1,] 3.0 1.0
[2,] 3.5 0.3 # 0.3 = 3.5 - 3.2 where 3.5 is …Run Code Online (Sandbox Code Playgroud) 我正在尝试准备一个要提交给 CRAN 的包。在我的描述文件中,我在 Depends 和 Suggests 参数中包含了非 CRAN 包。为了告诉 R 在哪里可以找到非 CRAN 包,我包含了 Additional_repositories 参数;并且我在程序的顶部(即在“zzz.R”中)包含了一个 .onLoad 函数。只要所有 Depends 和 Suggests 包都存在,我就能够在 RStudio 中构建和检查 (--as-cran) 零警告、注释或错误。然后我使用 devtools::build() 在本地创建一个 .tar.gz 文件。
为了测试本地安装是否成功,我从我的计算机中删除了非 CRAN 包并尝试安装我创建的 .tar.gz 文件。然后我收到消息:
ERROR: dependency 'smwrQW' is not available for package 'baytrends'
Run Code Online (Sandbox Code Playgroud)
我已经阅读了
不幸的是,上述错误仍在继续。我对我使用的 url 充满信心,因为下面的 install.package 行在独立运行时有效
install.packages('smwrQW',repos=c("http://owi.usgs.gov/R"),dependencies = TRUE)
Run Code Online (Sandbox Code Playgroud)
描述和 zzz.R 文件的适用位如下:
描述:
Date: 2017-03-15
Depends:
R …Run Code Online (Sandbox Code Playgroud)