假设您提供了一个长数据框,其中包含热图所需的所有数据。有没有一种优雅的方法来决定类别在轴上显示的顺序?
我举个例子:
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 中使用一个参数来为我完成此操作。
如果您想要轴标签而不是数字,您可以切换到
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")