highcharts 如何使用highcharter确定热图中分类值的顺序?

06odsfpq  于 2023-10-20  发布在  Highcharts
关注(0)|答案(1)|浏览(150)

假设你已经给出了一个很长的框架,其中包含了热图所需的所有数据。有没有一种优雅的方法来决定类别在轴上出现的顺序?
让我给予你一个例子:

library(highcharter)
long_data <- data.frame("xaxis"=c("startX","startX","secondX","secondX","lastX","lastX"),
                        "yaxis"=c("Y2","Y1","Y2","Y1","Y1","Y2"),
                        "value"=c(12,11,22,21,31,32))

highchart(type = "chart") %>% 
  hc_add_series(long_data, hcaes(x = xaxis, y = yaxis, value = value), type = 'heatmap', 
                showInLegend = T, name = "showcase", dataLabels = list(enabled = T)) %>% 
  hc_colorAxis(list(minColor = "blue", maxColor = "red"))

两个问题:
我怎么知道0,1和2是什么意思?作为一名程序员,我似乎没有办法在不查看原始数据的情况下找到答案。
我希望能够决定x轴和y轴的顺序,比如startX,secondX,lastX(从左到右)和Y1,Y2(从上到下)。我该怎么做?理想情况下,我不想依赖于long_data中的顺序,而是在highcharts中设置一个参数来完成这一任务。

sd2nnvve

sd2nnvve1#

如果你想要轴标签而不是数字,你可以切换到hchart(),它在后台调用hc_xAxishc_yAxis,并从你的数据中添加标签。或者您可以手动执行此操作,例如:hc_xAxis(categories = sort(unique(long_data$xaxis)))
关于轴上类别的顺序,正如@Jamie在评论中指出的那样,我们可以使用例如:hc_yAxis(reversed = TRUE)(在y轴的情况下),还有一个dataSorting选项可以根据另一列对类别进行重新排序。
除此之外,一个选项是通过转换为因子来设置顺序,其中水平的顺序根据您想要的顺序设置,例如。在下面的代码中,我颠倒了yaxis的顺序:

library(highcharter)
#> Registered S3 method overwritten by 'quantmod':
#>   method            from
#>   as.zoo.data.frame zoo

long_data <- data.frame(
  "xaxis" = c("startX", "startX", "secondX", "secondX", "lastX", "lastX"),
  "yaxis" = c("Y2", "Y1", "Y2", "Y1", "Y1", "Y2"),
  "value" = c(12, 11, 22, 21, 31, 32)
)

long_data$yaxis <- factor(long_data$yaxis, levels = c("Y2", "Y1"))

hchart(long_data, hcaes(x = xaxis, y = yaxis, value = value),
  type = "heatmap",
  showInLegend = TRUE, name = "showcase",
  dataLabels = list(enabled = TRUE)
) %>%
  hc_colorAxis(minColor = "blue", maxColor = "red")

相关问题