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

问题描述 投票:0回答:1

假设您提供了一个长数据框,其中包含热图所需的所有数据。有没有一种优雅的方法来决定类别在轴上显示的顺序?

我举个例子:

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 中使用一个参数来为我完成此操作。

r highcharts heatmap r-highcharter
1个回答
0
投票

如果您想要轴标签而不是数字,您可以切换到

hchart()
,它在后台调用
hc_xAxis
hc_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")

© www.soinside.com 2019 - 2024. All rights reserved.