如何使用 amcharts 库有条件地为选定的类别标签定义粗体?
How to conditionally define bold for selected categoryLabels using amcharts library?
问题:
我无法使用 amcharts 库将粗体属性传递给 Axis 类别中的所需标签。
案例:
我可以使用数据集本身为图表的每个元素传递 fillColor。这是我正在使用的数据集结构的示例:
var ordArray2 = [{"shop_name":"eBay - marsmediagmbh1","price_with_shipping":"369.00","color":"#769CC1","bold":false},{"shop_name":"CHECK24","price_with_shipping":"375.00","color":"#228172","bold":true}];
因此,条形颜色在图表中定义 class:
"graphs": [
{
"colorField": "color",
"fillAlphas": 1,
"id": "AmGraph-1",
"lineColorField": "color",
"title": "graph 1",
"type": "column",
"valueField": "price_with_shipping",
"balloonText" : "[[category]]: <b>[[value]] €</b>"
}
]
但是,这个原则似乎在 class categoryAxis 中不起作用,因为下面的代码只是将粗体应用于所有标签,而不仅仅是那些标记为 true
的标签数据集中的键bold
:
"categoryAxis": {
"autoRotateAngle": 45,
"autoRotateCount": 0,
"gridPosition": "start",
"titleRotation": null,
"boldLabels": "bold"
}
我试过将粗体键作为布尔值和字符串传递,效果是一样的。
代码与演示:
目前没有直接选项可以为单个类别轴标签设置字体粗细。
有几个选项供您考虑:
选项 1:使用不同的颜色来区分各个标签
为此你可以使用 labelColorField
:
"categoryAxis": {
"autoRotateAngle": 45,
"autoRotateCount": 0,
"gridPosition": "start",
"boldLabels": "bold",
"labelColorField": "color"
}
举个例子:
https://jsfiddle.net/uhxuw6ov/2/
选项 2:使用 CSS 设置单个标签的字体粗细
您可以使用 classNameField
将特殊的 class 名称应用于各个分类轴标签。然后通过 CSS.
定位他们
在数据中:
{
"shop_name": "Alternate.de",
"price_with_shipping": "405.95",
"color": "#2c3e50",
"labelClass": "bold-label"
}
在图表配置中:
"addClassNames": true,
"categoryAxis": {
"autoRotateAngle": 45,
"autoRotateCount": 0,
"gridPosition": "start",
"classNameField": "labelClass"
}
注意,addClassNames
是必需的。没有它,class 名称将不会应用于图表元素,包括那些应该来自 classNameField
.
的元素
Fiddle: https://jsfiddle.net/uhxuw6ov/3/
请注意,CSS 方法适用于支持 SVG 的现代浏览器。不支持 SVG 的旧版 IE 将忽略此设置。
问题:
我无法使用 amcharts 库将粗体属性传递给 Axis 类别中的所需标签。
案例:
我可以使用数据集本身为图表的每个元素传递 fillColor。这是我正在使用的数据集结构的示例:
var ordArray2 = [{"shop_name":"eBay - marsmediagmbh1","price_with_shipping":"369.00","color":"#769CC1","bold":false},{"shop_name":"CHECK24","price_with_shipping":"375.00","color":"#228172","bold":true}];
因此,条形颜色在图表中定义 class:
"graphs": [
{
"colorField": "color",
"fillAlphas": 1,
"id": "AmGraph-1",
"lineColorField": "color",
"title": "graph 1",
"type": "column",
"valueField": "price_with_shipping",
"balloonText" : "[[category]]: <b>[[value]] €</b>"
}
]
但是,这个原则似乎在 class categoryAxis 中不起作用,因为下面的代码只是将粗体应用于所有标签,而不仅仅是那些标记为 true
的标签数据集中的键bold
:
"categoryAxis": {
"autoRotateAngle": 45,
"autoRotateCount": 0,
"gridPosition": "start",
"titleRotation": null,
"boldLabels": "bold"
}
我试过将粗体键作为布尔值和字符串传递,效果是一样的。
代码与演示:
目前没有直接选项可以为单个类别轴标签设置字体粗细。
有几个选项供您考虑:
选项 1:使用不同的颜色来区分各个标签
为此你可以使用 labelColorField
:
"categoryAxis": {
"autoRotateAngle": 45,
"autoRotateCount": 0,
"gridPosition": "start",
"boldLabels": "bold",
"labelColorField": "color"
}
举个例子: https://jsfiddle.net/uhxuw6ov/2/
选项 2:使用 CSS 设置单个标签的字体粗细
您可以使用 classNameField
将特殊的 class 名称应用于各个分类轴标签。然后通过 CSS.
在数据中:
{
"shop_name": "Alternate.de",
"price_with_shipping": "405.95",
"color": "#2c3e50",
"labelClass": "bold-label"
}
在图表配置中:
"addClassNames": true,
"categoryAxis": {
"autoRotateAngle": 45,
"autoRotateCount": 0,
"gridPosition": "start",
"classNameField": "labelClass"
}
注意,addClassNames
是必需的。没有它,class 名称将不会应用于图表元素,包括那些应该来自 classNameField
.
Fiddle: https://jsfiddle.net/uhxuw6ov/3/
请注意,CSS 方法适用于支持 SVG 的现代浏览器。不支持 SVG 的旧版 IE 将忽略此设置。