簡體   English   中英

R Highcharter向下鑽取設置Ymin和Ymax +每個圖層的標題

[英]R Highcharter Drilldown Set Ymin & Ymax + Title for each layer

我目前正在使用R中的Java腳本包裝器highcharter。我想手動設置每個圖層的Y軸以及每個圖層的標題,但是還沒有找到一種方法。

例如,所有圖層的標題當前均為“基本細化”,我想針對每個細化進行更新。 就像我想手動設置y軸一樣。

提前致謝。

當前代碼如下。

df <- data_frame(
  name = c("Animals", "Fruits", "Cars"),
  y = c(5, 2, 4),
  drilldown = tolower(name)
)

df

hc <- highchart() %>%
  hc_chart(type = "column") %>%
  hc_title(text = "Basic drilldown") %>%
  hc_xAxis(type = "category") %>%
  hc_legend(enabled = FALSE) %>%
  hc_plotOptions(
    series = list(
      boderWidth = 0,
      dataLabels = list(enabled = TRUE)
    )
  ) %>%
  hc_add_series(
    data = df,
    name = "Things",
    colorByPoint = TRUE
  )


dfan <- data_frame(
  name = c("Cats", "Dogs", "Cows", "Sheep", "Pigs"),
  value = c(4, 3, 1, 2, 1)
)

dffru <- data_frame(
  name = c("Apple", "Organes"),
  value = c(4, 2)
)

dfcar <- data_frame(
  name = c("Toyota", "Opel", "Volkswagen"),
  value = c(4, 2, 2)
)

hc <- hc %>%
  hc_drilldown(
    allowPointDrilldown = TRUE,
    series = list(
      list(
        id = "animals",
        data = list_parse2(dfan)
      ),
      list(
        id = "fruits",
        data = list_parse2(dffru)
      ),
      list(
        id = "cars",
        data = list_parse2(dfcar)
      )
    )
  )

hc

EDIT *更新了答案,可以動態設置R高圖的yaxis。

      drilldown =  JS('function(e) {
 console.log(e.seriesOptions);
          this.setTitle({text: e.seriesOptions.name || e.seriesOptions.id });
          this.yAxis[0].update({ min: this.yAxis[0].getExtremes().max * 0.5 })}')

首先,您需要重構一下代碼,因為它是不正確的。 例如,嘗試使用所有系列名稱創建新變量,並將此名稱列表分配給data.frame drilldown字段:

names <- c("Animals", "Fruits", "Cars")

df <- data.frame(
  name = names,
  y = c(5, 2, 4),
  drilldown = names
)

然后,更改鑽取對象定義中的鑽取id ,因為沒有必要使它們從小寫字母開始:

hc_drilldown(
    allowPointDrilldown = TRUE,
    series = list(
      list(
        id = "Animals",
        data = list_parse2(dfan)
      ),
      list(
        id = "Fruits",
        data = list_parse2(dffru)
      ),
      list(
        id = "Cars",
        data = list_parse2(dfcar)
      )
    )
  )

最后一步是定義chart.events.drilldownchart.events.drillup函數處理程序,在其中可以使用Chart.update()函數設置chart.title.text 為了定義它,您必須使用JS() R內置函數,如下所示:

hc_chart(type = "column", events = list(
    load = JS("function() {console.log(this)}"),
    drilldown = JS("function(e) {this.update({title: {text: e.seriesOptions.id}})}"),
    drillup = JS("function() {this.update({title: {text: 'Basic drilldown' }})}")
  )) %>%

實際上,我不太理解問題的這一部分:

就像我想手動設置y軸一樣。

如果您更准確地描述它,那么我將擴展答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM