- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我要修改的图表:
如您所见,它是一个折线图,图像覆盖在每个系列的第一个项目符号上(用户图像!)。
现在我想在每个图像周围画一个圆圈,颜色与每个系列的线条相同。
像这样:
我认为,如果我们能够扩大每个系列的第一个项目符号,我们就能实现该目标。
此处是代码创建项目符号及其属性的地方,但此处的更改将影响 userA_series 中的所有项目符号:
var bullet = userA_series.bullets.push(new am4charts.CircleBullet())
bullet.circle.radius = 8;
bullet.fill = am4core.color("#ff0037");
bullet.stroke = am4core.color("#ff0037");
bullet.strokeWidth = 20;
完整代码如下:
// Themes begin
am4core.useTheme(am4themes_animated);
// Themes end
// Create chart instance
var chart = am4core.create("chartdiv", am4charts.XYChart);
// Import data from server
var inGroup = true;
var repeats = ["Start", "Day", "Week", "Month", "3th Month", "Year", "7th", "8th", "9th", "10th"];
var userA_Diamonds = ["7", "12", "18", "24", "20", "16", "19", "25", "29", "32"];
var userA_Performance = ["94", "29", "40", "65", "88", "89", "90", "75", "80", "89"];
var userA_GameOvers = ["8", "4", "4", "3", "5", "2", "1", "0", "0", "1"];
var userA_Rank = ["115", "114", "100", "98", "87", "55", "12", "45", "65", "18"];
userA_Performance.length = 3;
var userB_Performance = ["62", "55", "78", "84", "89", "87", "95", "74", "112", "115", "114"];
userB_Performance.length = 2;
var userC_Performance = ["25", "36", "42", "51", "49", "61", "68", "75", "90", "100", "112"];
userC_Performance.length = 1;
var userD_Performance = ["45", "49", "68", "64", "89", "110", "87", "46", "89", "64", "89"];
userD_Performance.length = 1;
// Add data
chart.data = [{
"repeat": "1th",
}, {
"repeat": repeats[0],
"DiamondsA": userA_Diamonds[0],
"PerformanceA": userA_Performance[0],
"GameOversA": userA_GameOvers[0],
"RankA": userA_Rank[0],
"PerformanceB": userB_Performance[0],
"PerformanceC": userC_Performance[0],
"PerformanceD": userD_Performance[0],
"bulletD": "https://i1.wp.com/teacupwellness.com/wp-content/uploads/2018/03/Amanda-Blankinship-profile-circle.png?fit=300%2C300&ssl=1",
"bulletC": "https://www.scripturaengage.com/wp-content/uploads/2017/03/Profile-Picture-Gert-Cools-Circle.png",
"bulletB": "https://www.cpisandiego.org/wp-content/uploads/2018/07/Andrea-profile-pic_circle-300x300.png",
"bulletA": "https://www.scripturaengage.com/wp-content/uploads/2017/05/Profile-Picture-Koen-VanGeert-circle-ScripturaEngage.png",
}, {
"repeat": repeats[1],
"DiamondsA": userA_Diamonds[1],
"PerformanceA": userA_Performance[1],
"GameOversA": userA_GameOvers[1],
"RankA": userA_Rank[1],
"PerformanceB": userB_Performance[1],
"PerformanceC": userC_Performance[1],
"PerformanceD": userD_Performance[1],
}, {
"repeat": repeats[2],
"DiamondsA": userA_Diamonds[2],
"PerformanceA": userA_Performance[2],
"GameOversA": userA_GameOvers[2],
"RankA": userA_Rank[2],
"PerformanceB": userB_Performance[2],
"PerformanceC": userC_Performance[2],
"PerformanceD": userD_Performance[2],
}, {
"repeat": repeats[3],
"DiamondsA": userA_Diamonds[3],
"PerformanceA": userA_Performance[3],
"GameOversA": userA_GameOvers[3],
"RankA": userA_Rank[3],
"PerformanceB": userB_Performance[3],
"PerformanceC": userC_Performance[3],
"PerformanceD": userD_Performance[3],
}, {
"repeat": repeats[4],
"DiamondsA": userA_Diamonds[4],
"PerformanceA": userA_Performance[4],
"GameOversA": userA_GameOvers[4],
"RankA": userA_Rank[4],
"PerformanceB": userB_Performance[4],
"PerformanceC": userC_Performance[4],
"PerformanceD": userD_Performance[4],
}, {
"repeat": repeats[5],
"DiamondsA": userA_Diamonds[5],
"PerformanceA": userA_Performance[5],
"GameOversA": userA_GameOvers[5],
"RankA": userA_Rank[5],
"PerformanceB": userB_Performance[5],
"PerformanceC": userC_Performance[5],
"PerformanceD": userD_Performance[5],
}, {
"repeat": repeats[6],
"DiamondsA": userA_Diamonds[6],
"PerformanceA": userA_Performance[6],
"GameOversA": userA_GameOvers[6],
"RankA": userA_Rank[6],
"PerformanceB": userB_Performance[6],
"PerformanceC": userC_Performance[6],
"PerformanceD": userD_Performance[6],
}, {
"repeat": repeats[7],
"DiamondsA": userA_Diamonds[7],
"PerformanceA": userA_Performance[7],
"GameOversA": userA_GameOvers[7],
"RankA": userA_Rank[7],
"PerformanceB": userB_Performance[7],
"PerformanceC": userC_Performance[7],
"PerformanceD": userD_Performance[7],
}, {
"repeat": repeats[8],
"DiamondsA": userA_Diamonds[8],
"PerformanceA": userA_Performance[8],
"GameOversA": userA_GameOvers[8],
"RankA": userA_Rank[8],
"PerformanceB": userB_Performance[8],
"PerformanceC": userC_Performance[8],
"PerformanceD": userD_Performance[8],
}, {
"repeat": repeats[9],
"DiamondsA": userA_Diamonds[9],
"PerformanceA": userA_Performance[9],
"GameOversA": userA_GameOvers[9],
"RankA": userA_Rank[9],
"PerformanceB": userB_Performance[9],
"PerformanceC": userC_Performance[9],
"PerformanceD": userD_Performance[9],
}, {
"repeat": "2019",
} ];
if(userA_Performance.length < 7){
splicer(8, 4);
} else{
};
function splicer(a, b) {
chart.data.splice( a, b );
}
// Create axes
var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "repeat";
categoryAxis.renderer.grid.template.disabled = false;
categoryAxis.renderer.minGridDistance = 30;
categoryAxis.startLocation = 0.5;
categoryAxis.endLocation = 0.5;
categoryAxis.renderer.minLabelPosition = 0.05;
categoryAxis.renderer.maxLabelPosition = 0.95;
categoryAxis.renderer.grid.template.strokeDasharray = "4,4";
var categoryAxisTooltip = categoryAxis.tooltip.background;
categoryAxisTooltip.pointerLength = 0;
categoryAxisTooltip.fillOpacity = 0.9;
categoryAxisTooltip.filters.push(new am4core.BlurFilter).blur = 5;
categoryAxis.tooltip.dy = 5;
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
valueAxis.renderer.inside = true;
valueAxis.renderer.grid.template.disabled = false;
valueAxis.renderer.minLabelPosition = 0.05;
valueAxis.renderer.maxLabelPosition = 0.95;
valueAxis.renderer.grid.template.strokeDasharray = "4,4";
// Create Colored Range
var range = valueAxis.axisRanges.create();
range.value = 100;
range.endValue = 200;
range.axisFill.fill = am4core.color("#46f727");
range.axisFill.fillOpacity = 0.01;
// Create Colored Line
var range = valueAxis.axisRanges.create();
range.value = 100;
range.grid.stroke = am4core.color("#f72727");
range.grid.strokeWidth = 2;
range.grid.strokeOpacity = 0.1;
//var valueAxisTooltip = valueAxis.tooltip.background;
//valueAxisTooltip.pointerLength = 0;
//valueAxisTooltip.fillOpacity = 0.8;
//valueAxisTooltip.filters.push(new am4core.BlurFilter).blur = 5;
valueAxis.cursorTooltipEnabled = false;
// Do not crop bullets
chart.maskBullets = false;
// Remove padding
chart.paddingBottom = 35;
chart.paddingTop = 50;
// Create userD_series: light Blue
var userD_series = chart.series.push(new am4charts.LineSeries());
userD_series.dataFields.categoryX = "repeat";
userD_series.dataFields.valueY = "PerformanceD";
userD_series.stroke = am4core.color("#5394fc");
userD_series.strokeWidth = 2;
userD_series.strokeDasharray = "3,3";
userD_series.tooltipText = "[bold #6b12e4 font-size: 14]{valueY}%[/]";
userD_series.tooltip.pointerOrientation = "vertical";
userD_series.tooltip.label.textAlign = "middle";
userD_series.tooltip.label.background.fill = am4core.color("#fcf9f9");
userD_series.tooltip.background.strokeWidth = 10;
userD_series.tooltip.background.cornerRadius = 3;
userD_series.tooltip.disabled = true;
var bullet = userD_series.bullets.push(new am4charts.CircleBullet())
bullet.circle.radius = 8;
bullet.fill = am4core.color("#5394fc");
bullet.stroke = am4core.color("#5394fc");
bullet.strokeWidth = 3;
var shadow1 = new am4core.DropShadowFilter();
userD_series.filters.push(shadow1);
// Create userC_series: Dark Blue
var userC_series = chart.series.push(new am4charts.LineSeries());
userC_series.dataFields.categoryX = "repeat";
userC_series.dataFields.valueY = "PerformanceC";
userC_series.stroke = am4core.color("#0027d8");
userC_series.strokeWidth = 2;
userC_series.strokeDasharray = "3,3";
userC_series.tooltipText = "[bold #6b12e4 font-size: 14]{valueY}%[/]";
userC_series.tooltip.pointerOrientation = "vertical";
userC_series.tooltip.label.textAlign = "middle";
userC_series.tooltip.label.background.fill = am4core.color("#fcf9f9");
userC_series.tooltip.background.strokeWidth = 10;
userC_series.tooltip.background.cornerRadius = 3;
userC_series.tooltip.disabled = true;
var bullet = userC_series.bullets.push(new am4charts.CircleBullet())
bullet.circle.radius = 8;
bullet.fill = am4core.color("#0400ff");
bullet.stroke = am4core.color("#0400ff");
bullet.strokeWidth = 3;
var shadow1 = new am4core.DropShadowFilter();
userC_series.filters.push(shadow1);
// Create userB_series: Blue
var userB_series = chart.series.push(new am4charts.LineSeries());
userB_series.dataFields.categoryX = "repeat";
userB_series.dataFields.valueY = "PerformanceB";
userB_series.stroke = am4core.color("#732ec9");
userB_series.strokeWidth = 2;
userB_series.strokeDasharray = "3,3";
userB_series.tooltipText = "[bold #002aff font-size: 14]{valueY}%[/]";
userB_series.tooltip.pointerOrientation = "vertical";
userB_series.tooltip.label.textAlign = "middle";
userB_series.tooltip.label.background.fill = am4core.color("#fcf9f9");
userB_series.tooltip.background.strokeWidth = 10;
userB_series.tooltip.background.cornerRadius = 3;
userB_series.tooltip.disabled = true;
var bullet = userB_series.bullets.push(new am4charts.CircleBullet())
bullet.circle.radius = 8;
bullet.fill = am4core.color("#6a1ec9");
bullet.stroke = am4core.color("#6a1ec9");
bullet.strokeWidth = 3;
var shadow2 = new am4core.DropShadowFilter();
userB_series.filters.push(shadow2);
chart.cursor = new am4charts.XYCursor();
chart.cursor.lineX.disabled = true;
chart.cursor.lineY.disabled = true;
// Create userA_series: Red
var userA_series = chart.series.push(new am4charts.LineSeries());
userA_series.dataFields.categoryX = "repeat";
userA_series.dataFields.valueY = "PerformanceA";
userA_series.stroke = am4core.color("#ff0037");
userA_series.strokeWidth = 4;
userA_series.strokeDasharray = "12,3";
//userA_series.tooltipText = "[bold #ff0037 font-size: 14]{valueY}%[/]";
//userA_series.tooltip.pointerOrientation = "vertical";
//userA_series.tooltip.label.textAlign = "middle";
userA_series.tooltipHTML = "<img src='Images/Diamonds.png' style='vertical-align:middle; margin-right: 14px; width:38px; height:34px;'><span style='font-size:14px; color:#448afc;'><b>Diamonds: {DiamondsA}</b></span><br><img src='Images/Performance.png' style='vertical-align:middle; margin-right: 10px; width:42px; height:40px;'><span style='font-size:14px; color:#000000;'><b>Performance: {PerformanceA}</b></span><br><img src='Images/Game-Overs.png' style='vertical-align:middle; margin-right: 20px; width:32px; height:30px;'><span style='font-size:14px; color:#000000;'><b>Game Overs: {GameOversA}</b></span><br><img src='Images/Rank.png' style='vertical-align:middle; margin-right: 10px; width:43px; height:41px;'><span style='font-size:14px; color:#000000;'><b>Rank: {RankA}</b></span>";
userA_series.tooltip.label.background.fill = am4core.color("#f7f7f7");
userA_series.tooltip.background.strokeWidth = 10;
userA_series.tooltip.background.cornerRadius = 3;
var bullet = userA_series.bullets.push(new am4charts.CircleBullet())
bullet.circle.radius = 8;
bullet.fill = am4core.color("#ff0037");
bullet.stroke = am4core.color("#ff0037");
bullet.strokeWidth = 20;
var bullet3hover = bullet.states.create("hover");
bullet3hover.properties.scale = 1.4;
var shadow1 = new am4core.DropShadowFilter();
userA_series.filters.push(shadow1);
// Add bullets 1
var bullet = userA_series.bullets.push(new am4charts.Bullet());
var image = bullet.createChild(am4core.Image);
image.width = 100;
image.height = 100;
image.horizontalCenter = "middle";
image.verticalCenter = "bottom";
image.dy = 45;
image.y = am4core.percent(100);
image.propertyFields.href = "bulletA";
image.propertyFields.fill = "color";
image.filters.push(new am4core.DropShadowFilter());
// Add bullets 2
var bullet = userB_series.bullets.push(new am4charts.Bullet());
var image = bullet.createChild(am4core.Image);
image.width = 50;
image.height = 50;
image.horizontalCenter = "middle";
image.verticalCenter = "bottom";
image.dy = 20;
image.y = am4core.percent(100);
image.propertyFields.href = "bulletB";
image.propertyFields.fill = "color";
image.filters.push(new am4core.DropShadowFilter());
// Add bullets 3
var bullet = userC_series.bullets.push(new am4charts.Bullet());
var image = bullet.createChild(am4core.Image);
image.width = 50;
image.height = 50;
image.horizontalCenter = "middle";
image.verticalCenter = "bottom";
image.dy = 20;
image.y = am4core.percent(100);
image.propertyFields.href = "bulletC";
image.propertyFields.fill = "color";
image.filters.push(new am4core.DropShadowFilter());
// Add bullets 4
var bullet = userD_series.bullets.push(new am4charts.Bullet());
var image = bullet.createChild(am4core.Image);
image.width = 50;
image.height = 50;
image.horizontalCenter = "middle";
image.verticalCenter = "bottom";
image.dy = 20;
image.y = am4core.percent(100);
image.propertyFields.href = "bulletD";
image.propertyFields.fill = "color";
image.filters.push(new am4core.DropShadowFilter());
HTML
<!-- Resources -->
<script language="JavaScript" src="amcharts4/core.js"></script>
<script language="JavaScript" src="amcharts4/charts.js"></script>
<script language="JavaScript" src="amcharts4/themes/animated.js"></script>
<div id="chartdiv"></div>
<link rel="stylesheet" href="Style.css">
<script src="Script.js"></script>
CSS
#chartdiv {
width: 1500px;
height: 700px;
}
body {
margin: 160 100 100 20;
background-color: transparent;
overflow:hidden;
font-family: "Helvetica Neue";
font-weight: 800;
src: url(helveticaneue-ultrathin.woff);
}
最佳答案
您可以使用 Adapter为了那个原因。只需在子弹圆的 radius
属性中添加一个适配器即可:
bullet.circle.radius = 8;
bullet.circle.adapter.add("radius", (radius, target, key) => {
if (target.dataItem.dataContext.repeat === 'Start') {
return 50;
}
return radius;
});
在某些情况下,您应该更改 image.dy
属性以使图像在圆形项目符号中居中:
image.dy = 50;
我创建了 this code pen作为引用。但是我只为第一个系列添加了适配器,你必须为其他系列自己做
关于javascript - 如何放大 amCharts 系列的第一个项目符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179646/
我正在开发这样的摄影应用程序: https://play.google.com/store/apps/details?id=com.photo.editor.collage.maker.photobl
我正在尝试创建一个可以像在 Excel 中一样放大和缩小的 QTableView。 此处提出了类似的问题:Zooming function on a QWidget 但是,我在 PyQt 而不是 C
我想找到放大/缩小 TVirtualStringTree 的“最佳方法”。 “放大”的意思是模仿放大镜。 必须通过优先使用 TVirtualStringTree 控件中专门用于此目的的属性/方法来理解
有没有办法在emacs上放大和缩小(动态改变字体大小,相当流畅)? 最佳答案 尝试 C-x C-+ 和 C-x C--;即 Control-x Control-减号/Control-再加上。 在一个组
我在使用 Leaflet 时遇到问题。我在 map 上找到了一堆标记(在我的例子中它代表高尔夫球场)。但是,当我放大/缩小时,标记在 map 上移动。 浏览网页后,解决方案似乎是 iconAnchor
我在使用 Leaflet 时遇到问题。我在 map 上找到了一堆标记(在我的例子中它代表高尔夫球场)。但是,当我放大/缩小时,标记在 map 上移动。 浏览网页后,解决方案似乎是 iconAnchor
我正在开发一款非常低分辨率的游戏,我需要放大它才能看到。我知道我可以使用 Graphics.scale(float x, float y) 但我想放大到中心。如何缩放中心的图形?有没有更简单的方法来制
我有这种方法可以向前/向后和向左/向右平移相机。我不确定为什么,但是是什么导致相机在靠近地形放大时移动得很好,但在缩小时移动得非常慢? 这是我平移相机的方式: void CameraPan(){
我正在尝试像这样进行缩放:zoom the imageview on the double click in viewflipper in android 我尝试将该代码改编为我的项目,但它不起作用.
$(window).height() 获取页面加载时窗口的高度。但是,在放大/缩小时,我想要新的视点高度。这可能吗? 它可以很好地调整普通浏览器的大小,但我想在移动设备上放大/缩小不会触发 $(win
我正在尝试制作一个显示图像、 block 文本和按钮的面板,与下一个模型上显示的面板保持相似的比率,无论页面大小/缩放比例是多少。 我首先尝试使用横写文本的图像(即不对文本、图像和背景使用不同的部分或
Blockquote 大家好,请问是否可以在此代码中添加放大、缩小功能?我对 html 很陌生。任何帮助将不胜感激。 Career Center
我有一个由 3 个元素组成的搜索栏。 首先 a 保存从下拉列表中选择的值。 第二个清除选择的元素 第三个供用户在下拉菜单之间切换。 我的问题 - 当我缩放超过 100% 时,img 和按钮元素变大了一
我目前遇到网站页脚的问题。 当以 100% 大小(正常大小)处理时,页脚对齐得很好。但是,当我调整它的大小时,它完全不对齐并位于左侧,它需要保持居中。 屏幕截图: 相关 CSS: /* Dark bl
我实现了 3 个按钮来允许用户放大、缩小和返回到默认大小。 脚本可以进行放大和缩小,但我还有 2 个问题无法解决。 第一个问题: 每次放大时,要缩放的图像仍然到达我的窗口的限制,当图像左右没有任何空间
即使我在网页上放大或缩小,我也试图让 shadowbox 保持在同一个地方。我尝试以百分比而不是像素为单位来制作尺寸,但我不知道应该使用哪种属性组合。 这是我想要实现的结果:来自这里的外部阴影框效果h
我有点困惑。我按照 Apple 的建议放大 ScrollView ,但没有任何反应。 代码: import UIKit import SpriteKit class ScrollViewControl
我正在尝试通过导航实现类似 Bootstrap 的 header ,但我刚刚发现当我缩小窗口时, header 内的内容变得困惑并且 header 也最小化而不是保持相同的大小。我已经在页眉上使用了
我正在开发一个包含许多 UIView 的 iOS 应用程序。 UINavigation 用于在这些 View 之间导航。 我的一个 UIView 包含 UITextField。我的问题是,当我缩放时,
我正在尝试从 FITS 文件中绘制一些数据,我想知道是否有人知道如何关注绘图轴的某些区域?下面是一些示例代码: import pyfits from matplotlib import pyplot
我是一名优秀的程序员,十分优秀!