| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="https://cdn.amcharts.com/lib/5/index.js"></script> |
| <script src="https://cdn.amcharts.com/lib/5/xy.js"></script> |
| <script src="https://cdn.amcharts.com/lib/5/themes/Animated.js"></script> |
| <style> |
| #chartdiv { |
| width: 650PX; |
| height: 280px; |
| } |
| </style> |
| </head> |
| <body> |
| <div id="chartdiv"></div> |
| |
| <script> |
| am5.ready(function() { |
| |
| |
| |
| var root = am5.Root.new("chartdiv"); |
| |
| |
| |
| |
| root.setThemes([ |
| am5themes_Animated.new(root) |
| ]); |
| |
| |
| |
| |
| var chart = root.container.children.push(am5xy.XYChart.new(root, { |
| panX: true, |
| panY: true, |
| wheelX: "panX", |
| wheelY: "zoomX", |
| pinchZoomX:true, |
| paddingLeft: 0 |
| })); |
| |
| chart.get("colors").set("step", 3); |
| |
| |
| |
| |
| var cursor = chart.set("cursor", am5xy.XYCursor.new(root, {})); |
| cursor.lineY.set("visible", false); |
| |
| |
| |
| |
| var xAxis = chart.xAxes.push(am5xy.DateAxis.new(root, { |
| maxDeviation: 0.3, |
| baseInterval: { |
| timeUnit: "day", |
| count: 1 |
| }, |
| renderer: am5xy.AxisRendererX.new(root, { |
| minorGridEnabled: true, |
| minGridDistance: 70 |
| }), |
| tooltip: am5.Tooltip.new(root, {}) |
| })); |
| |
| var yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, { |
| maxDeviation: 0.3, |
| renderer: am5xy.AxisRendererY.new(root, {}) |
| })); |
| |
| |
| |
| |
| var series = chart.series.push(am5xy.LineSeries.new(root, { |
| name: "Series 1", |
| xAxis: xAxis, |
| yAxis: yAxis, |
| valueYField: "value", |
| valueXField: "date", |
| tooltip: am5.Tooltip.new(root, { |
| labelText: "{valueY}" |
| }) |
| })); |
| series.strokes.template.setAll({ |
| strokeWidth: 2, |
| strokeDasharray: [3, 3] |
| }); |
| |
| |
| |
| series.bullets.push(function(root, series, dataItem) { |
| if (dataItem.dataContext.bullet) { |
| var container = am5.Container.new(root, {}); |
| var circle0 = container.children.push(am5.Circle.new(root, { |
| radius: 5, |
| fill: am5.color(0xff0000) |
| })); |
| var circle1 = container.children.push(am5.Circle.new(root, { |
| radius: 5, |
| fill: am5.color(0xff0000) |
| })); |
| |
| circle1.animate({ |
| key: "radius", |
| to: 20, |
| duration: 1000, |
| easing: am5.ease.out(am5.ease.cubic), |
| loops: Infinity |
| }); |
| circle1.animate({ |
| key: "opacity", |
| to: 0, |
| from: 1, |
| duration: 1000, |
| easing: am5.ease.out(am5.ease.cubic), |
| loops: Infinity |
| }); |
| |
| return am5.Bullet.new(root, { |
| sprite: container |
| }) |
| } |
| }) |
| |
| |
| var data = [{ |
| date: new Date(2021, 5, 12).getTime(), |
| value: 50 |
| }, { |
| date: new Date(2021, 5, 13).getTime(), |
| value: 53 |
| }, { |
| date: new Date(2021, 5, 14).getTime(), |
| value: 56 |
| }, { |
| date: new Date(2021, 5, 15).getTime(), |
| value: 52 |
| }, { |
| date: new Date(2021, 5, 16).getTime(), |
| value: 48 |
| }, { |
| date: new Date(2021, 5, 17).getTime(), |
| value: 47 |
| }, { |
| date: new Date(2021, 5, 18).getTime(), |
| value: 59, |
| bullet: true |
| }] |
| |
| series.data.setAll(data); |
| |
| |
| |
| |
| series.appear(1000); |
| chart.appear(1000, 100); |
| |
| }); |
| </script> |
| </body> |
| </html> |
- 效果图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-05-30 spring boot纯注解开发模板