基于 amcharts 中自定义项目符号周围的数据值创建边框?
Creating a border based on a data value around a custom bullet in amcharts?
我想在 AMCharts 中围绕我的自定义项目符号创建边框。这个想法是根据我数据中的某些值,边框将是不同的颜色。这是我现在的代码:
graphs: [{
"bullet": "round",
"bulletSize": 50,
"customBullet": "https://www.amcharts.com/lib/3/images/star.png?x",
"bulletBorderColor": "#00ff00" ,
"bulletBorderThickness": 10,
"bulletBorderAlpha": 1,
"id": "AmGraph",
"title": "graph",
"type": "smoothedLine",
"valueField": "value",
"valueAxis": "ValueAxis-1"
}]
看起来好像自定义项目符号覆盖了边框粗细、颜色和 alpha。有没有解决的办法?边框不必与图片内容的形状相匹配,显然,沿着边缘即可。
新发展:
我能够弄清楚如何为每个项目符号添加自定义 class,但我无法修改 css 以显示边框。更常见的是,整个图像消失了。关于如何围绕它创建边框有什么建议吗?
<g transform="translate(173,27) scale(1)" aria-label="graph category" class="amcharts-graph-bullet CustomClass" fill-opacity="1" stroke-opacity="1"></g>
我尝试添加
style="stroke: #0000ff; stroke-width: 4px;"
但一点作用都没有。
除了@gerric 建议使用 SVG 项目符号之外,还有另一个解决方法。
使用两个重叠图:1 带有 PNG 项目符号的常规图; 2 - 只有项目符号轮廓的透明图形:
"graphs": [{
"bullet": "round",
"bulletSize": 50,
"customBullet": "https://www.amcharts.com/lib/3/images/star.png?x",
"bulletBorderColor": "#00ff00",
"bulletBorderThickness": 10,
"bulletBorderAlpha": 1,
"id": "AmGraph",
"title": "graph",
"type": "smoothedLine",
"valueField": "value",
"valueAxis": "ValueAxis-1"
}, {
"bullet": "round",
"bulletSize": 50,
"bulletBorderColor": "#00ff00",
"bulletAlpha": 0,
"bulletBorderThickness": 2,
"bulletBorderAlpha": 1,
"valueField": "value",
"valueAxis": "ValueAxis-1",
"lineAlpha": 0,
"balloonText": "",
"visibleInLegend": false
}]
这是一个工作示例:
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"theme": "light",
"dataProvider": [{
"date": "2009-10-02",
"value": 5
}, {
"date": "2009-10-03",
"value": 15
}, {
"date": "2009-10-04",
"value": 13
}, {
"date": "2009-10-05",
"value": 17
}, {
"date": "2009-10-06",
"value": 15
}, {
"date": "2009-10-09",
"value": 19
}, {
"date": "2009-10-10",
"value": 21
}, {
"date": "2009-10-11",
"value": 20
}, {
"date": "2009-10-12",
"value": 20
}, {
"date": "2009-10-13",
"value": 19
}, {
"date": "2009-10-16",
"value": 25
}, {
"date": "2009-10-17",
"value": 24
}, {
"date": "2009-10-18",
"value": 26
}, {
"date": "2009-10-19",
"value": 27
}, {
"date": "2009-10-20",
"value": 25
}, {
"date": "2009-10-23",
"value": 29
}, {
"date": "2009-10-24",
"value": 28
}, {
"date": "2009-10-25",
"value": 30
}, {
"date": "2009-10-26",
"value": 72,
"customBullet": "https://www.amcharts.com/lib/3/images/redstar.png"
}, {
"date": "2009-10-27",
"value": 43
}, {
"date": "2009-10-30",
"value": 31
}],
"valueAxes": [{
"axisAlpha": 0,
"dashLength": 4,
"position": "left"
}],
"graphs": [{
"bullet": "round",
"bulletSize": 50,
"customBullet": "https://www.amcharts.com/lib/3/images/star.png?x",
"bulletBorderColor": "#00ff00",
"bulletBorderThickness": 10,
"bulletBorderAlpha": 1,
"id": "AmGraph",
"title": "graph",
"type": "smoothedLine",
"valueField": "value",
"valueAxis": "ValueAxis-1"
}, {
"bullet": "round",
"bulletSize": 50,
"bulletBorderColor": "#00ff00",
"bulletAlpha": 0,
"bulletBorderThickness": 2,
"bulletBorderAlpha": 1,
"valueField": "value",
"valueAxis": "ValueAxis-1",
"lineAlpha": 0,
"balloonText": "",
"visibleInLegend": false
}],
"chartCursor": {
//"graphBulletSize": 1,
"zoomable": false,
"valueLineEnabled": true,
"valueLineBalloonEnabled": true,
"valueLineAlpha": 0.2
},
"autoMargins": false,
"dataDateFormat": "YYYY-MM-DD",
"categoryField": "date",
"valueScrollbar": {
"offset": 30
},
"categoryAxis": {
"parseDates": true,
"axisAlpha": 0,
"gridAlpha": 0,
"inside": true,
"tickLength": 0
}
});
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
<script src="https://www.amcharts.com/lib/3/serial.js"></script>
<script src="https://www.amcharts.com/lib/3/themes/light.js"></script>
<div id="chartdiv" style="height: 200px;"></div>
我想在 AMCharts 中围绕我的自定义项目符号创建边框。这个想法是根据我数据中的某些值,边框将是不同的颜色。这是我现在的代码:
graphs: [{
"bullet": "round",
"bulletSize": 50,
"customBullet": "https://www.amcharts.com/lib/3/images/star.png?x",
"bulletBorderColor": "#00ff00" ,
"bulletBorderThickness": 10,
"bulletBorderAlpha": 1,
"id": "AmGraph",
"title": "graph",
"type": "smoothedLine",
"valueField": "value",
"valueAxis": "ValueAxis-1"
}]
看起来好像自定义项目符号覆盖了边框粗细、颜色和 alpha。有没有解决的办法?边框不必与图片内容的形状相匹配,显然,沿着边缘即可。
新发展: 我能够弄清楚如何为每个项目符号添加自定义 class,但我无法修改 css 以显示边框。更常见的是,整个图像消失了。关于如何围绕它创建边框有什么建议吗?
<g transform="translate(173,27) scale(1)" aria-label="graph category" class="amcharts-graph-bullet CustomClass" fill-opacity="1" stroke-opacity="1"></g>
我尝试添加
style="stroke: #0000ff; stroke-width: 4px;"
但一点作用都没有。
除了@gerric 建议使用 SVG 项目符号之外,还有另一个解决方法。
使用两个重叠图:1 带有 PNG 项目符号的常规图; 2 - 只有项目符号轮廓的透明图形:
"graphs": [{
"bullet": "round",
"bulletSize": 50,
"customBullet": "https://www.amcharts.com/lib/3/images/star.png?x",
"bulletBorderColor": "#00ff00",
"bulletBorderThickness": 10,
"bulletBorderAlpha": 1,
"id": "AmGraph",
"title": "graph",
"type": "smoothedLine",
"valueField": "value",
"valueAxis": "ValueAxis-1"
}, {
"bullet": "round",
"bulletSize": 50,
"bulletBorderColor": "#00ff00",
"bulletAlpha": 0,
"bulletBorderThickness": 2,
"bulletBorderAlpha": 1,
"valueField": "value",
"valueAxis": "ValueAxis-1",
"lineAlpha": 0,
"balloonText": "",
"visibleInLegend": false
}]
这是一个工作示例:
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"theme": "light",
"dataProvider": [{
"date": "2009-10-02",
"value": 5
}, {
"date": "2009-10-03",
"value": 15
}, {
"date": "2009-10-04",
"value": 13
}, {
"date": "2009-10-05",
"value": 17
}, {
"date": "2009-10-06",
"value": 15
}, {
"date": "2009-10-09",
"value": 19
}, {
"date": "2009-10-10",
"value": 21
}, {
"date": "2009-10-11",
"value": 20
}, {
"date": "2009-10-12",
"value": 20
}, {
"date": "2009-10-13",
"value": 19
}, {
"date": "2009-10-16",
"value": 25
}, {
"date": "2009-10-17",
"value": 24
}, {
"date": "2009-10-18",
"value": 26
}, {
"date": "2009-10-19",
"value": 27
}, {
"date": "2009-10-20",
"value": 25
}, {
"date": "2009-10-23",
"value": 29
}, {
"date": "2009-10-24",
"value": 28
}, {
"date": "2009-10-25",
"value": 30
}, {
"date": "2009-10-26",
"value": 72,
"customBullet": "https://www.amcharts.com/lib/3/images/redstar.png"
}, {
"date": "2009-10-27",
"value": 43
}, {
"date": "2009-10-30",
"value": 31
}],
"valueAxes": [{
"axisAlpha": 0,
"dashLength": 4,
"position": "left"
}],
"graphs": [{
"bullet": "round",
"bulletSize": 50,
"customBullet": "https://www.amcharts.com/lib/3/images/star.png?x",
"bulletBorderColor": "#00ff00",
"bulletBorderThickness": 10,
"bulletBorderAlpha": 1,
"id": "AmGraph",
"title": "graph",
"type": "smoothedLine",
"valueField": "value",
"valueAxis": "ValueAxis-1"
}, {
"bullet": "round",
"bulletSize": 50,
"bulletBorderColor": "#00ff00",
"bulletAlpha": 0,
"bulletBorderThickness": 2,
"bulletBorderAlpha": 1,
"valueField": "value",
"valueAxis": "ValueAxis-1",
"lineAlpha": 0,
"balloonText": "",
"visibleInLegend": false
}],
"chartCursor": {
//"graphBulletSize": 1,
"zoomable": false,
"valueLineEnabled": true,
"valueLineBalloonEnabled": true,
"valueLineAlpha": 0.2
},
"autoMargins": false,
"dataDateFormat": "YYYY-MM-DD",
"categoryField": "date",
"valueScrollbar": {
"offset": 30
},
"categoryAxis": {
"parseDates": true,
"axisAlpha": 0,
"gridAlpha": 0,
"inside": true,
"tickLength": 0
}
});
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
<script src="https://www.amcharts.com/lib/3/serial.js"></script>
<script src="https://www.amcharts.com/lib/3/themes/light.js"></script>
<div id="chartdiv" style="height: 200px;"></div>