javascript - 在 amcharts4 中的气泡图中的气泡下标记
问题描述
我试图弄清楚如何在 amcharts 4 中的气泡图中标记其下方的气泡,如下所示:
但我没有找到任何关于它的官方信息。
如果将 LabelBullet 推到系列上,则标签以数据点为中心,然后您可以使用 dx/dy 调整它们的位置,但问题出在气泡图上,气泡相对于数据点会改变大小。
到目前为止,这是我想出的,但我希望有人可能有更官方的东西:
const bulletLabel = series.bullets.push(new am4charts.LabelBullet());
bulletLabel.label.text = options.bubbleLabelText;
bulletLabel.label.paddingTop = 20;
bulletLabel.label.fontSize = 12;
series.heatRules.push(
{
target: bulletLabel,
min: options.minRadius || 5,
max: options.maxRadius || 60,
property: 'dy'
}
);
这也仅在在气泡下方标记时有效,我想不出一种方法让它在气泡上方工作。
解决方案
您需要为's使用适配器。当它出现时,检查子弹以获取对其的引用(用于气泡),检查其半径,然后将其用于您的. 如果您希望它高于或低于 ,您还可以提供逻辑,例如,如果值小于,则高于 ,否则低于 。LabelBullet
dy
dataItem.bullets
CircleBullet
dy
CircleBullet
10
// Sample data
{
"date": "2015-01-08",
"ay": 8,
"by": 12.3,
"aValue": 5,
"bValue": 13,
bubbleLabelText: "test"
}
const bulletLabel = series.bullets.push(new am4charts.LabelBullet());
bulletLabel.label.text = "{bubbleLabelText}";
bulletLabel.label.fontSize = 12;
bulletLabel.adapter.add('dy', (dy, bullet) => {
let radiusDy = dy;
bullet.dataItem.bullets.iterator()(firstBullet => {
const circleBullet = firstBullet[1];
if (bullet.dataItem.dataContext.bubbleLabelText) {
radiusDy = circleBullet.circle.radius;
if(bullet.dataItem.values.valueY.value >= 10) {
radiusDy += 12;
} else {
radiusDy = -1 * radiusDy - 12;
}
}
})
return radiusDy;
});
这是我们的Bubble XY 图表的一个分支,带有基于日期的轴演示,上面的代码:
https://codepen.io/team/amcharts/pen/a86361c54a4c369e8c49bdd931f8d0f5
Label
您可以尝试在内部(作为它的孩子)做类似的事情CircleBullet
,修补其valign
和/或CircleBullet
's contentValign
,但您仍然必须动态调整它们dy
,使它们稍微高于/低于圆圈。
希望这可以帮助。
推荐阅读
- sql - 我在 MariaDB 中使用日期(包括毫秒精度)的条件之间得到不同的结果
- python - Scipy 优化曲线拟合与真实数据不正确拟合
- javascript - 将数组传递给函数但记录为未定义
- python - 多列中出现的单词的 One-hot 编码
- watson-studio - 已部署 SPSS 建模器流的 CUH 消耗
- sql - 如何通过检查布尔标志将数据插入表变量
- r - 如何将星期几添加到 Rstudio 中的现有日期列
- reactjs - 如何在 Spring Boot 后端配置 React 应用程序以在 localhost 8080 中启动
- python - 将具有多次迭代的函数应用于熊猫系列的最佳方法
- c# - 仅填充 ItemDataBound Telerik 下拉列表中的唯一值