gpt4 book ai didi

r - 如何在 r highcharter 中的条形旁边显示标签?

转载 作者:行者123 更新时间:2023-12-04 17:05:59 26 4
gpt4 key购买 nike

我正在尝试创建一个条形图,其中 x 轴标签位于条形旁边。
我想要的结果类似于:

/image/LuPIV.png
(来自:HighCharts Place Label on Bar)

但是,有两个区别:

  • 我正在 R highcharter 中制作图表
  • 我不想要酒吧内的标签,而是在它们旁边。它看起来应该类似于您通常在条形旁边添加值的方式,请参阅 for example :

  • enter image description here

    我曾尝试偏移标签,但由于我不希望它们位于固定位置,而是位于相对于条的位置,因此这不起作用。

    我也尝试过使用注释,但我对这些注释不够熟悉,无法使其正常工作。我的原始示例允许用户选择特定系列。所以位置必须是动态的,但是当我使用注释时,我只能让它们出现在固定点。

    这是我的图表外观的一个非常基本的示例:
    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)

    我想要的是 a/b/c 不出现在图例中,而是显示在栏旁边。

    感谢您提供的任何帮助!

    最佳答案

    您不需要使用注释。使用更方便 数据标签 .它们默认放置在您想要的位置,您可以使用 在其中显示任何您想要的内容。 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)

    Final effect with above code

    API 引用: https://api.highcharts.com/highcharts/series.column.dataLabels

    纯JS示例: https://jsfiddle.net/BlackLabel/nrtax718

    关于r - 如何在 r highcharter 中的条形旁边显示标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57775579/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com