Highcharts/HighcharteR Tooltip: เข้าถึงค่า y ทั้งหมดภายในชุด พิมพ์ความแตกต่าง

[แก้ไข] ฉันลงเอยด้วยการแก้ไขในขณะที่เขียนคำถามนี้ ดังนั้นดูคำตอบด้านล่าง


ฉันมีกราฟที่มีช่วงเวลาบนแกน x และมีคะแนนบนแกน y และในแต่ละจุด ฉันต้องการให้คำแนะนำเครื่องมือให้ความแตกต่างในค่า y ระหว่างจุดปัจจุบันและจุดก่อนหน้า (ภายใน ชุดเดียวกัน)

ตัวอย่างที่ทำซ้ำได้:

library(highcharter)

hchart(df, 
       type="line", 
       hcaes(x = period, y = value, group = group)
  ) %>%
  hc_tooltip(pointFormat = "Score: {point.y} ({previous.point.y})")

ตามหลักการแล้ว เมื่อวางเมาส์เหนือจุดที่สองของซีรีส์ B ฉันอยากให้มันพูดว่า Score: 5 (+1) อาจต้องใช้ formatter=JS() JavaScript แทนที่จะเป็นเพียง pointFormat แต่ไม่แน่ใจว่าต้องทำอย่างไร


person rvrvrv    schedule 10.04.2020    source แหล่งที่มา


คำตอบ (1)


ได้รับความอนุเคราะห์จากคำตอบที่เกี่ยวข้องนี้ ฉันจัดการเพื่อเข้าถึงค่า y ทั้งหมด หลังจากนั้นฉันก็พบว่าการใช้ this.point.x ช่วยให้เราสามารถฝึกฝนได้ ในค่า y เฉพาะเจาะจง นี่คือ JS:

function () {
  if (this.point.x == 0) {  // there's no previous point, so set to '0'
    var thisDiff = 0;
  } else {  // use 'this.point.x' to get current position, and do '-1' to get previous position
    var thisDiff = ( this.series.points[this.point.x].y - this.series.points[this.point.x - 1].y );
    if (thisDiff > 0) {
      thisDiff = '+' + thisDiff;  // pretty print a '+' sign if difference is positive
    }
  }
  var s = '<b>Series ' + this.series.name + ', period ' + this.point.name + ': </b>';
  s += 'mean score ' + this.point.y + ' (' + thisDiff + ')';
  return(s);
}

เพื่อให้มันทำงานใน highcharteR เราเพียงแค่ต้องใส่เครื่องหมายคำพูดและส่งไปที่ hc_tooltip(formatter = JS()

person rvrvrv    schedule 10.04.2020