mouseover行标有一些点

时间:2014-07-03 04:53:49

标签: r rcharts

我是rCharts的新手,事实上这是我的第一次尝试。所以请原谅一个天真的问题。

我正在尝试创建一个简单的rCharts视觉效果,它只有一条水平线(X轴)而没有Y轴。我希望能够选择长度,并且该行中的每个点都有鼠标悬停,代表一些数据。另外我想为一些特殊点添加颜色。 这看起来很简单,但我在这方面遇到了很大困难。

library(rCharts)
age <- c(1:2000)
dot <- rep(1,2000)
name <- paste(letters[0], 1:2000, sep="")
df <- data.frame(age=age,dot=dot,name=name)
n1 <- nPlot(dot~age, data=df, type="scatterChart")
n1$chart(tooltipContent = "#! function(key,x,y,e){var d = e.series.values[e.pointIndex];return 'x:'+ x + 'y:' + y + 'name:' + d.name }!#")
n1

现在这将创建一个带有鼠标悬停的线,但是在y = 1处的线,并且还有x和y轴。我只想要一行,类似于标有特殊事件的时间轴。

非常感谢。

1 个答案:

答案 0 :(得分:2)

好吧,关闭y-axis非常简单。我在代码中添加了一些其他想法。

library(rCharts)
age <- c(1:2000)
dot <- c(
  rep(1,1000),
  rep(2,1000)
)
name <- c(
  rep(letters[1], 1000),
  rep(letters[2], 1000)
)
df <- data.frame(age=age,dot=dot,name=name)
n1 <- nPlot(dot~age, data=df, group = "name", type="scatterChart")
n1$chart(
  tooltipContent = "#! function(key,x,y,e){
    var d = e.series.values[e.pointIndex]
    return 'x:'+ x + 'y:' + y + 'name:' + d.name
  }!#",
  showYAxis = FALSE,    #turns off y axis
  forceY = c(0,4)       #forces y axis to 0 min and 4 max
)
n1

虽然我认为这解决了这个问题,但我期待一些事情。一个是如果你定义每个点,那么数据将变大。我们可以更改为lineChart以最小化发送的数据,但工具提示仅显示在定义的点上。我确信有一种方法可以将事件绑定到路径以显示工具提示,但它超出了我的能力。我猜你可能希望x成为日期格式。如果你愿意,我也很乐意演示一个例子。

n2 <- nPlot(
  dot~age
  , data=data.frame(
    name = c(rep("A",2),rep("B",2)),
    dot = c(1,1,2,2),
    age = c(1,1000,1000,2000)
  )
  , group = "name"
  , type="lineChart"
)
n2$chart(
  tooltipContent = "#! function(key,x,y,e){
    var d = e.series.values[e.pointIndex]
    return 'x:'+ x + 'y:' + y + 'name:' + d.name
  }!#",
  showYAxis = FALSE,    #turns off y axis
  forceY = c(0,4)       #forces y axis to 0 min and 4 max
)
n2

以下是基于评论的附加代码

require(dplyr)
require(magrittr)
require(rCharts)

data <- jsonlite::fromJSON('[
  [5, 
   0, "a1"], [480, 0, "a2"], [250, 0, "a3"], [100, 0, "a4"], [330, 0, "a5"],
  [410, 0, "a6"], [475, 
                   0, "a7"], [25, 0, "a8"], [85, 0, "a9"], [220, 0, "a10"],
  [600, 0, "a11"]

  ]') %>% as.data.frame(stringsAsFactors = F) %>%
  set_colnames(c("x","y","name")) %>%
  mutate(x = as.numeric(x)) %>%
  mutate(y = as.numeric(y))

data$grp <- c(rep("A",3),rep("B",5),rep("Z",3))

n1 <- nPlot(
  y~x
  ,group = "grp"
  ,data = data
  ,type="scatterChart"
  ,height=200
)
n1$chart(
  tooltipContent = "#! function(key,x,y,e){
    var d = e.series.values[e.pointIndex]
    var mytip = [];
    mytip.push('<h1>name:'+  d.name + '</h1>');
    mytip.push('<p>x:' + x + '</p>');
    mytip.push('<p>y:' + y + '</p>');
    return mytip.join('');
  }!#",
  showYAxis = FALSE,    #turns off y axis
  forceY = c(-1,1)       #forces y axis to 0 min and 4 max
  ,showDistX = TRUE     #turn on markers on the x axis
  ,showDistY = FALSE
)
n1$yAxis(
  showMaxMin = FALSE
  ,axisLabel = NULL
)
n1

注意:鱼眼中有一个干扰工具提示的错误;我们可以删除以立即显示工具提示

让我知道这是如何运作的。