use*_*624 4 r highcharts r-highcharter
我正在尝试创建一个条形图,其中 x 轴标签位于条形旁边。我想要的结果类似于:
(来自:HighCharts 在栏上放置标签)
然而,有两点不同:
我正在 R highcharter 中制作图表
我不想要标签在酒吧里面,而是在酒吧旁边。它看起来应该类似于您通常在条形图旁边添加值的方式,例如:
我尝试过偏移标签,但由于我不希望它们位于固定位置,而是位于相对于条的位置,所以这不起作用。
我也尝试过使用注释,但我对它们不够熟悉,无法使其正常工作。我原来的示例允许用户选择特定的系列。所以位置必须是动态的,但是当我使用注释时,我只能让它们出现在固定点。
这是我的图表的一个非常基本的示例:
library(highcharter)
#create dataframe
data <- data.frame(
type_1 = c("a", "a", "b", "b", "c", "c"),
type_2 = c("1", "2", "1", "2", "1", "2"),
n = c(5,8,10,4,7,9))
data
# create chart
highchart() %>%
hc_add_series(data, type = "bar", hcaes(x = type_1, group = type_2, y = n)) %>%
hc_plotOptions(series = list(stacking = 'normal')) %>%
hc_xAxis(categories = unique(data$type_1)
Run Code Online (Sandbox Code Playgroud)
我希望 a / b/ c 不要出现在图例中,而是显示在栏旁边。
感谢您提供的任何帮助!
您不需要使用注释。使用dataLabels更容易。默认情况下,它们放置在您想要的位置,您可以使用dataLabels.formatter在其中显示您想要的任何内容。当然,您现在可以禁用 xAxis 标签。
这是一个示例(我定义了一个数组标签并从中返回,但您可以从type_1列表中返回值):
library(highcharter)
#create dataframe
data <- data.frame(
type_1 = c("a", "a", "b", "b", "c", "c"),
type_2 = c("1", "2", "1", "2", "1", "2"),
n = c(5,8,10,4,7,9))
data
# create chart
highchart() %>%
hc_add_series(data, type = "bar", hcaes(x = type_1, group = type_2, y = n), dataLabels = list(
enabled = TRUE,
formatter = JS(
"function() {
var labels = ['a', 'b', 'c'];
return labels[this.point.x];
}"
))) %>%
hc_xAxis(categories = data$type_1)
Run Code Online (Sandbox Code Playgroud)
API 参考: https: //api.highcharts.com/highcharts/series.column.dataLabels
纯JS示例: https: //jsfiddle.net/BlackLabel/nrtax718