g2.Chart折线图绘制

一、官方文档

https://www.yuque.com/antv/g2-docs/api-chart#legend

二、g2.Chart折线图绘制

(一)、引入g2.js

<!-- 引入在线资源 -->
<script src="https://gw.alipayobjects.com/as/g/datavis/assets/1.0.5/g2/3.0.0/g2.min.js"></script>
<!-- 引入本地脚本 -->
<script src="./g2.js"></script>

(二)、创建 div 图表容器

<div id="chart"></div>

(三)、绘图

1、静态数据
    var data = [{date: '2018/8/1', type: '首页', value: 4623},
        		{date: '2018/8/1', type: '中国模块详情', value: 2208},
                {date: '2018/8/1', type: '中国模块结算', value: 182},
                {date: '2018/8/1', type: '合同申请', value: 289},
                {date: '2018/8/1', type: '中国模块支付', value: 257},
                {date: '2018/8/2', type: '首页', value: 6145},
                {date: '2018/8/2',type: '中国模块详情', value: 2016},
                {date: '2018/8/2', type: '中国模块结算', value: 257},
                {date: '2018/8/2', type: '合同申请', value: 289},
                {date: '2018/8/2', type: '中国模块支付', value: 257},
                {date: '2018/8/3', type: '首页',value: 508},
                {date: '2018/8/3', type: '中国模块详情', value: 2916},
                {date: '2018/8/3', type: '中国模块结算', value: 289},
                {date: '2018/8/3', type: '中国模块支付', value: 257},
                {date: '2018/8/3', type: '合同申请', value: 289}];

				// 图表创建
  				 var Frame = G2.Frame;
   				 var chart = new G2.Chart({
       					container: "chart",
       					padding:[20, 300, 80, 100]
  				 });
  				 
				//装载数据
   				 chart.source(data);   // 载入数据源
   				 chart.source(data, {
        				'date': {
         					type: 'cat',  //分类
            				alias:"日期"  //别名
         				},
        				'value':{
            				alias:"浏览数量"
         				}
 				 });

				//坐标轴配置(法一配置)
                    chart.axis('date', {// 坐标轴
                        label: {
                             textStyle: {
                                fill: '#aaaaaa'
                             }
                         }
                     });
                     chart.axis('value', {
                         label: {
                             textStyle: {
                                 fill: '#aaaaaa'
                             },
                             formatter: function formatter(text) {// 格式化参数值
                                 return text.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
                             }
                         }
                     });

			//设置坐标系类型  transpose():将坐标系 x 轴和 y 轴转置
            // chart.coord("rect").transpose();

			// chart.legend(false); 图例禁用

			 //图例设置
			 chart.legend({
                    marker: 'circle',  //图例的 marker 样式
                    position: 'right', //位置
                    offsetX: 30,      
                    useHtml: true,//使用Html绘制图例
                    flipPage:true//图例超出容器是否滚动
              });
  
  			//绘制折线图
  			chart.line().position('date*value').color('type');  //x轴:date  y轴:value ,折线根据type分颜色
  			//设置折点样式
  			chart.point().position('date*value').size(3).color('type').shape('circle');

			//图表绘制的最后一步,用于将图表渲染至画布
            chart.render();
2、动态数据

				// 图表创建
  				 var Frame = G2.Frame;
   				 var chart = new G2.Chart({
       					container: "chart",
       					padding:[20, 300, 80, 100]
  				 });
  				 
				//装载数据
   				 //chart.source(data);  载入数据源
   				 chart.source([], {
        				'date': {
         					type: 'cat',  //分类
            				alias:"日期"  //别名
         				},
        				'value':{
            				alias:"浏览数量"
         				}
 				 });

				//坐标轴配置(法二配置 )
                 chart.scale({
                        date: {
                            type: 'cat', // 声明 type 字段为分类类型
                            alias: '日期' // 设置属性的别名
                        },
                        value: {
                            min:0,
                            alias: '次数' // 设置属性的别名
                        }
                    });

			//设置坐标系类型  transpose():将坐标系 x 轴和 y 轴转置
            // chart.coord("rect").transpose();
			// chart.legend(false); 图例禁用

			 //图例设置
			 chart.legend({
                    marker: 'circle',  //图例的 marker 样式
                    position: 'right', //位置
                    offsetX: 30,      
                    useHtml: true,//使用Html绘制图例
                    flipPage:true//图例超出容器是否滚动
              });
  
  			//绘制折线图
  			chart.line().position('date*value').color('type');  //x轴:date  y轴:value ,折线根据type分颜色
  			//设置折点样式
  			chart.point().position('date*value').size(3).color('type').shape('circle');

			//图表绘制的最后一步,用于将图表渲染至画布
            chart.render();

// 加载数据
					var $dateList=$("#dateList");
                    function loadData() {
                        $browseStatisticForm.ajaxSubmit({
                            success: function(data, textStatus, xhr, $form) {
                                if(data){
                                    // console.log("----"+JSON.stringify(data));打印至前端控制台
                                    $dateList.find("li").remove();
                                    $.each(data, function(i, e) {//data格式为List<Map<String,Object>>,i为下标,e为data的每一项(即每一个map)
                                        if(e.dateList){//dateList为其中一个Map的key,他的value是一个日期的List集合(对应上一行注释的Object)
                                            var rankingType = $rankingType.val();
                                            var size = $size.val();
                                            $.each(e.dateList,function (index,element) {//遍历dataList集合,index为下标,element为dataList的每一项(即每一个日期)
                                                var url ="${base}/admin/browse_statistic/recordDetail?recordDateStr="+element.toString()+"&rankingType="+rankingType;
                                                var path=encodeURI(url.replace(/ /g, "%20"));//将日期中的空格替换为“20%”
                                                var str ="<li><a href="+path+">"+element+"</a></li>";
                                                $dateList.append (str);//动态生成<li>并添加至已准备好的<ul>下
                                            })
                                        }
                                    });
                                }
                                chart.changeData(data);//将数据加载至chart图表中
                                chart.leg
                                chart.forceFit();
                            }
                        });
                    };

                    loadData();
                    
//准备好接收动态<li>的<ul>
		<div class="btn-group">
		     <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
		     		查看详情<span class="caret"></span>
		     </button>
		     <ul class="dropdown-menu" id="dateList">
		     </ul>
		</div>

动态数据–效果图:
在这里插入图片描述

Ant Design Vue 的 G2 是一个基于 G2 的图表解决方案,它可以用来在 Vue.js 应用中渲染图表。要在 G2折线图中改变颜色,可以通过设置特定的样式属性来实现。在 G2 中,你可以通过 `color` 属性来指定折线的颜色,还可以使用回调函数来为不同的数据点指定不同的颜色。 下面是一个基本的例子,展示了如何在 G2 折线图中设置颜色: ```javascript // 首先,需要引入 G2 import G2 from '@antv/g2'; // 创建图表实例 const chart = new G2.Chart({ container: 'container', // 容器ID width: 600, // 图表宽度 height: 300, // 图表高度 }); // 加载数据 chart.source(data, { // 这里可以配置数据的字段映射 }); // 绘制折线图 chart.line().position('x*y').color('colorField', (colorField) => { // colorField 是数据中的颜色字段,可以根据此字段返回不同的颜色值 // 这里可以定义你的颜色逻辑,例如根据不同的值返回不同的颜色 if (colorField === 'CategoryA') { return '#FF0000'; // 红色 } if (colorField === 'CategoryB') { return '#00FF00'; // 绿色 } // 其他情况可以返回默认颜色或继续添加条件 return '#0000FF'; // 蓝色 }); // 渲染图表 chart.render(); ``` 在上面的代码中,`colorField` 是数据中的一个字段名,它包含了用于区分颜色的数据。你可以根据这个字段的值来动态返回不同的颜色。如果你希望所有线条都是固定颜色,也可以直接通过一个颜色值来设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值