我想自订缐条数据的图例,使图例图形成为缐条(样式与实际数据缐条相同)而非方块。
就我所知from the source,图形可以是一个点或一个框,框的高度固定为字体大小。“generateLabels”选项似乎不允许围绕这些约束进行扩展。
版本2.2.1。
谢谢你的帮助。
我想自订缐条数据的图例,使图例图形成为缐条(样式与实际数据缐条相同)而非方块。
就我所知from the source,图形可以是一个点或一个框,框的高度固定为字体大小。“generateLabels”选项似乎不允许围绕这些约束进行扩展。
版本2.2.1。
谢谢你的帮助。
5条答案
按热度按时间liwlm1x91#
注意:此解决方案仅适用于Chart.js的本地版本,因为它需要在库的源代码中编辑函数,而如果从CDN导入,则无法完成此操作。
要达到您的目的,您需要编辑
drawLegendBox
函数(* 在此处链接到源代码 *)。首先,就像您要制作pointStyle图例一样,加入
useLineStyle
并将其设定为true
,如下所示:然后您需要转到Chart.js的本地版本(* 显然,如果您从CDN导入它,您将无法编辑它 *),并搜索函数
drawLegendBox
(在Chart.js v2.2.1上,它大约是第6460行;在Chart.js v2.9.4中搜索labelOpts && labelOpts.usePointStyle
)。向下滚动一点,可以看到如下内容:
并在这两个条件之间加上这一条:
通过此编辑,每次将
useLineStyle
设置为true时,图例框都将绘制为线条,如以下屏幕截图所示:ncgqoxb02#
我可以使用pointStyle:
line
,在数据集中,然后在选项下使用标签:{usePointStyle: true,}
,tvmytwxo3#
只是为了改进这个来自tektiv的解决方案。如果你想显示一条虚线,也可以在同一个地方使用这个代码。
(16289号线附近的图表2.7.2):
doinxwow4#
chart.js
版本3对于这个版本,前面提到的内置配置都不起作用。您可以在图例标签上设置
boxHeight: 0
,以便获得一条线而不是一个框:x759pob25#
你可以通过改变图例框的宽度(例如2px)来制作线图例,它将是垂直线,但它看起来也很漂亮