【问题标题】:Highcharts TreemapHighcharts 树状图
【发布时间】:2021-06-09 12:13:54
【问题描述】:

我目前正在使用 highcharts 构建树形图。我有几个类别,每个类别都有一个数值,表示它里面有多少程序。我想要做的是有一个“方形”风格的树形图,每个类别都有一个框。

我遇到的问题是处理 highcharts 的字体大小非常糟糕。我希望文本对于较大的盒子来说是大的,对于较小的盒子来说是小的。我似乎无法弄清楚。

我尝试将字体大小缩放到该值,但有时较大值的框非常薄,因此会分崩离析。

我可以访问框的尺寸,并且可以为图表提供数据标签格式化程序功能。所以我尝试将文本以一定大小渲染到画布上,看看它是否在边界内或太小,然后从那里调整 1 个像素,但它仍然不起作用。我实际上不知道为什么这个失败了,但是我弄乱了它一段时间但没有成功。

我已经阅读了文档并在线搜索了其他答案,但之前似乎没有人这样做过。任何帮助表示赞赏。谢谢

【问题讨论】:

  • 嗨@Noah,你能在一些在线代码编辑器中重现这个问题吗?您可以从:jsfiddle.net/BlackLabel/o0ckadbs
  • 嘿@ppotaczek,该示例已经显示了我遇到的问题。左下角和底部中间的框,标记为 peter 和 anne,字体大小与它们的框相匹配。但是,标记为 rick 的左上角框更大,但字体大小相同。我找不到任何方法来使字体与框的大小一致。如果我将默认大小设置得更大,rick box 中的字体会适当调整大小,但 peter 和 anne box 的字体会由于溢出而被隐藏,或者有丑陋的溢出文本(取决于设置)

标签: javascript css angular highcharts treemap


【解决方案1】:

您可以对数据标签使用格式化功能,并根据点值设置字体大小。

    series: [{
        ...,
        levels: [{
            ...
        }, {
            level: 2,
            dataLabels: {
                formatter: function() {
                    return '<span style="font-size:' + (10 + this.point.value) + 'px">' + this.key + '</span>'
                }
            }
        }],
        ...
    }]

现场演示: https://jsfiddle.net/BlackLabel/8e7b6ak0/

API 参考: https://api.highcharts.com/highcharts/series.treemap.levels.dataLabels.formatter

【讨论】:

  • 谢谢,但这不起作用。虽然平方算法做得最好,但它并不完美,并且会产生具有奇怪纵横比的框,这种方法会失败。一个非常大的值可能会以一个宽而短的框结束。
  • 嗨@Noah,您也可以使用框高来计算字体大小,例如:jsfiddle.net/BlackLabel/zfh8bqn7
猜你喜欢
  • 2019-12-17
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多