首页 > web前端 > js教程 > 正文

聚集散点图

Linda Hamilton
发布: 2024-10-31 20:37:02
原创
884 人浏览过

Clustered Scatter Chart

使用 ZingChart 可视化足球运动员行进的距离

在本教程中,我们将使用 ZingChart 创建散点图,以可视化不同足球比赛中球员的移动距离。该图表显示了多场比赛的模拟数据,可以深入了解每分钟所经过的距离。

代码说明

此代码片段使用 JavaScript 生成八个游戏的虚假数据,然后使用 ZingChart 配置并渲染散点图。

  • 游戏数据:每个游戏都表示为一个独特的数据系列。
  • 随机距离:游戏中每分钟的距离都是随机的,以模拟现实世界的分布。
  • 图表配置: 图表使用 ZingChart 的散点图类型、可自定义标记和轴进行设置。

下面是创建此图表的完整 HTML 和 JavaScript 代码。

代码片段

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ZingSoft Demo</title>
    <script src="https://cdn.zingchart.com/zingchart.min.js"></script>
    <script>
// CHART CONFIG
// -----------------------------
let chartConfig = {
    type: 'hbar',
    theme: 'dark',
    title: {
        text: 'Average Temperatures',
        marginLeft: '20px',
    },
    legend: {
        align: 'left',
        backgroundColor: 'none',
        borderWidth: '0px',
        item: {
            cursor: 'hand',
            fontColor: '#E3E3E5',
        },
        marker: {
            type: 'circle',
            borderWidth: '0px',
            cursor: 'hand',
        },
        offsetY: '25px',
        verticalAlign: 'top',
    },
    plot: {
        tooltip: {
            text: '%data-city<br>High: %data-highs<br>Low: %data-lows',
        },
    },
    plotarea: {
        margin: '120px 50px 60px 85px',
    },
    scaleX: {
        label: {
            text: '2020',
            fontSize: '14px',
        },
        labels: [
            'Jan',
            'Feb',
            'Mar',
            'Apr',
            'May',
            'Jun',
            'Jul',
            'Aug',
            'Sep',
            'Oct',
            'Nov',
            'Dec',
        ],
        zooming: true,
        zoomTo: [0, 5],
    },
    scaleY: {
        format: '%v°F',
        guide: {
            lineStyle: 'solid',
        },
        label: {
            text: 'Temperature',
            fontSize: '14px',
        },
    },
    shapes: [
        {
            type: 'rectangle',
            id: 'view_all',
            backgroundColor: '#5e5e5e',
            borderColor: '#E3E3E5',
            borderRadius: '3px',
            borderWidth: '1px',
            cursor: 'hand',
            height: '20px',
            label: {
                text: 'View All',
                bold: true,
                fontColor: '#E3E3E5',
                fontSize: '12px',
            },
            width: '75px',
            x: '89%',
            y: '7%',
        },
    ],
    series: [
        {
            text: 'New Orleans Average Temps 2020',
            values: [17, 17, 19, 18, 17, 15, 16, 16, 15, 17, 19, 17],
            dataCity: 'New Orleans',
            dataHighs: [62, 65, 72, 78, 85, 89, 91, 91, 87, 80, 72, 64],
            dataLows: [45, 48, 53, 60, 68, 74, 75, 75, 72, 63, 53, 47],
            offsetValues: [45, 48, 53, 60, 68, 74, 75, 75, 72, 63, 53, 47],
        },
        {
            text: 'San Diego Average Temps 2020',
            values: [16, 14, 13, 11, 10, 9, 10, 9, 9, 12, 15, 17],
            dataCity: 'San Diego',
            dataHighs: [65, 65, 66, 67, 69, 71, 75, 76, 76, 73, 69, 65],
            dataLows: [49, 51, 53, 56, 59, 62, 65, 67, 65, 61, 54, 48],
            offsetValues: [49, 51, 53, 56, 59, 62, 65, 67, 65, 61, 54, 48],
        },
        {
            text: 'Denver Average Temps 2020',
            values: [27, 27, 27, 27, 29, 30, 31, 31, 31, 29, 27, 27],
            dataCity: 'Denver',
            dataHighs: [45, 46, 54, 61, 72, 82, 90, 88, 79, 66, 52, 45],
            dataLows: [18, 19, 27, 34, 43, 52, 59, 57, 48, 37, 25, 18],
            offsetValues: [18, 19, 27, 34, 43, 52, 59, 57, 48, 37, 25, 18],
        },
    ],
    scrollX: {},
};
// RENDER CHARTS
// -----------------------------
zingchart.render({
    id: 'myChart',
    data: chartConfig,
    height: '100%',
    width: '100%',
});
// EVENTS
// -----------------------------
// store the original zoom level info
const origin_zoomin_level = zingchart.exec('myChart', 'getzoom');
// a flag to control the view
let switch_view = 'viewall';
zingchart.shape_click = (p) => {
    if (p.shapeid == 'view_all') {
        switch (switch_view) {
            case 'viewall':
                // change zoom level to viewall
                zingchart.exec(p.id, 'viewall');
                // update the switch button text label
                // to Previous View
                zingchart.exec(p.id, 'updateobject', {
                    type: 'shape',
                    data: {
                        id: 'view_all',
                        label: {
                            text: 'Original View',
                        },
                        width: '110px',
                    }
                });
                // set the flag to previous_view 
                switch_view = 'original_view';
                break;
            case 'original_view':
                // scale-x and scale-y are array from 
                // origina_zoomin_level object
                let scale_x = origin_zoomin_level['scale-x'];
                let scale_y = origin_zoomin_level['scale-y'];
                // use zoomtovalues to get back to original zoom
                // level, pass attributes from origin_zoomin_level 
                // object xmin, xmax, ymin, ymax as parameter
                zingchart.exec(p.id, 'zoomtovalues', {
                    graphid: 0,
                    xmin: scale_x.xmin,
                    xmax: scale_x.xmax,
                    ymin: scale_y.ymin,
                    ymax: scale_y.ymax
                });
                // update the switch button text label
                // to View All
                zingchart.exec(p.id, 'updateobject', {
                    type: 'shape',
                    data: {
                        id: 'view_all',
                        label: {
                            text: 'View All',
                        },
                        width: '75px',
                    }
                });
                // change the flag back to viewall
                switch_view = 'viewall';
                break;
        }
    }
};

    </script>
    <style>
      .zc-body { background:#000; }

.chart--container {
  height: 100%;
  width: 100%;
  min-height: 530px;
}

.zc-ref {
  display: none;
}
    </style>
  </head>
  <body class="zc-body">
  ​
    <div id="myChart" class="chart--container">
      <a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
    </div>

  </body>
</html>
登录后复制

运行代码

  1. 将代码复制到 HTML 文件中并在浏览器中打开它。
  2. 您应该会看到代表每场比赛的散点图,显示玩家在 90 分钟内随机行进的距离。

结论

此图表提供了一种清晰且可定制的方式来使用 ZingChart 表示基于时间的数据,例如玩家动作。快乐编码!

NEvolution #nabegh_anane

以上是聚集散点图的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!