Highcharts/HighcharteR Tooltip: akses semua nilai y dalam satu rangkaian, cetak perbedaannya

[EDIT] Saya akhirnya menyelesaikannya saat saya menulis pertanyaan ini, jadi lihat jawabannya di bawah.


Saya memiliki grafik yang memiliki periode waktu pada sumbu x, dan skor pada sumbu y, dan pada setiap titik saya ingin tooltip memberikan perbedaan nilai y antara titik saat ini dan titik sebelumnya (dalam seri yang sama).

Contoh yang dapat direproduksi:

library(highcharter)

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

Idealnya, saat mengarahkan kursor misalnya ke titik kedua untuk seri B, saya ingin mengatakan Score: 5 (+1). Ini mungkin memerlukan beberapa formatter=JS() JavaScript, bukan hanya pointFormat, tetapi tidak yakin bagaimana melakukannya.


person rvrvrv    schedule 10.04.2020    source sumber


Jawaban (1)


Atas izin jawaban terkait ini, saya berhasil mengakses semua nilai y, setelah itu saya menemukan bahwa menggunakan this.point.x memungkinkan kita mengasah pada nilai y tertentu. Inilah JSnya:

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);
}

Agar dapat berfungsi di highcharteR kita hanya perlu membungkusnya dalam tanda kutip dan meneruskannya ke hc_tooltip(formatter = JS()

person rvrvrv    schedule 10.04.2020