Echarts可视化教程(五)——直角坐标系下的网格和坐标轴


任务描述

本关任务:按照要求设置网格和坐标轴。

相关知识

在学习了柱状图、柱状图、饼状图的画法之后,我们还需要对图像上的辅助组件做进一步的了解,包括坐标轴、图例、工具等。

本关将介绍坐标轴的相关知识。

直角坐标系下的网格

Echarts中的网格是直角坐标系下定义网格布局和大小及颜色的组件。用于定义直角坐标系的整体布局。

网格有很多属性,我们分两部分来看,第一部分是有关网格位置和大小的属性,如下所示:

参数默认值含义
x80直角坐标系内绘制出来的图的左上角的x轴坐标
y60直角坐标系内绘制出来的图的左上角的y轴坐标
x280直角坐标系内绘制出来的图右下角的x轴坐标
y20直角坐标系内绘制出来的图的右下角的y轴坐标
width适应直角坐标系内绘制出来的图的宽度
height适应直角坐标系内绘制出来的图的高度

因为我们绘制出来的柱状图、柱状图都是在一个矩形区域内的,所以要指定区域的位置和坐标,上面六个参数就是起这个作用,如下所示是这些参数在坐标轴上的表示:

图  1


图 1 坐标轴

可以看到,当指定了widthheight的值,x2y2便会自动计算出来,无需再指定。

第二部分有有关颜色等的属性,如下:

参数默认值含义
backgroundColor'transparent'背景颜色
borderWidth1网格的边框线的宽度
borderColor'#ccc'网格的边框线的颜色

来看一个具体的例子加深理解:

 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ECharts</title>
  6. <!-- 引入 echarts.js -->
  7. <script type="text/JavaScript" src="../static/echarts.min.js"></script>
  8. <body>
  9. <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  10. <div id="main" style="width: 600px;height:400px;"></div>
  11. <script type="text/javascript">
  12. var myChart = echarts.init(document.getElementById('main'));
  13. myChart.setOption({
  14. grid: {
  15. show: true,
  16. x: 40,
  17. y: 50,
  18. width: '90%',
  19. height: '60%',
  20. backgroundColor: '#66ffff',
  21. borderWidth: 2,
  22. borderColor: '#6666ff'
  23. },
  24. title : {
  25. text : "杭州地铁1号线客流情况"//标题
  26. },
  27. tooltip : {
  28. },
  29. legend: {
  30. data:['1号线']//图例
  31. },
  32. xAxis : [
  33. {
  34. type : 'category',//表示x轴的每一项由几组数据组成
  35. data : ['周一','周二','周三','周四','周五','周六','周日']//x轴标题
  36. }
  37. ],
  38. yAxis : [
  39. {
  40. type : 'value'//每一项都是数据
  41. }
  42. ],
  43. series : [
  44. {
  45. name:'1号线',//数据的名字
  46. type:'line',//表示柱状图
  47. stack: 'stack1',//数据系列的名字,stack相同的数据才会堆到一个柱子上
  48. itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
  49. data:[37, 35, 38, 36, 37, 45, 48]//数据
  50. }
  51. ]
  52. });
  53. // 使用刚指定的配置项和数据显示图表。
  54. myChart.setOption(option);
  55. </script>
  56. </body>
  57. </html>

可以看到,上面提到的所有属性都是在grid组件中设置,它就是网格的意思。

最终的效果如下所示:

图  1


图 2 设置网格组件

直角坐标系下的坐标轴

坐标轴分为横轴,又叫x轴,对应xAxis;和纵轴,又叫y轴,对应yAxis。横轴和纵轴都有三种类型的坐标轴(用type指定):

  • 类目型,通常横轴使用,使用data属性设置类目列表,比如某购物中心各门店销量统计图,则类目列表就是门店的名字列表。

  • 数值型,就是数字,通常纵轴使用。

  • 时间型,多见于纵轴,与数值型类似,只是显示效果不同,以时间的格式显示。

一般来说,坐标轴的属性和其类型有关,不同类型的坐标轴属性不同,但是也有一些公共的属性,如下:

参数默认值含义
type横轴为category,纵轴为valuecategoryvaluetime分别表示类目、数值和时间
showtrue是否显示坐标轴
name''坐标轴名称
nameLocation'end'坐标轴名字的位置
data类目列表[]

来看一个具体的例子:

 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ECharts</title>
  6. <!-- 引入 echarts.js -->
  7. <script type="text/JavaScript" src="../static/echarts.min.js"></script>
  8. <body>
  9. <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  10. <div id="main" style="width: 600px;height:400px;"></div>
  11. <script type="text/javascript">
  12. var myChart = echarts.init(document.getElementById('main'));
  13. myChart.setOption({
  14. grid: {
  15. x:140,
  16. y:50
  17. },
  18. title : {
  19. text : "某商场各门店一周销售额",//标题
  20. left:'center'
  21. },
  22. tooltip : {
  23. },
  24. legend: {
  25. orient: 'vertical',
  26. x:10,
  27. y:10,
  28. data:['优衣库', '海底捞', '肯德基', '小米之家', '李宁']//图例
  29. },
  30. xAxis : [
  31. {
  32. show : true,
  33. name: '星期',
  34. nameLocation: 'start',
  35. type : 'category',//表示x轴的每一项由几组数据组成
  36. data : ['周一','周二','周三','周四','周五','周六','周日']//x轴标题
  37. }
  38. ],
  39. yAxis : [
  40. {
  41. show : true,
  42. name: '销量(万元)',
  43. nameLocation: 'start',
  44. type : 'value'//每一项都是数据
  45. }
  46. ],
  47. series : [
  48. {
  49. name:'优衣库',//数据的名字
  50. type:'line',//表示柱状图
  51. itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
  52. data:[33, 35, 38, 36, 35, 45, 48]//数据
  53. },
  54. {
  55. name:'海底捞',//数据的名字
  56. type:'line',//表示柱状图
  57. itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
  58. data:[67, 65, 69, 70, 81, 102, 105]//数据
  59. },
  60. {
  61. name:'肯德基',//数据的名字
  62. type:'line',//表示柱状图
  63. itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
  64. data:[38, 36, 38, 40, 50, 60, 65]//数据
  65. },
  66. {
  67. name:'小米之家',//数据的名字
  68. type:'line',//表示柱状图
  69. itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
  70. data:[57, 55, 56, 58, 65, 74, 75]//数据
  71. },
  72. {
  73. name:'李宁',//数据的名字
  74. type:'line',//表示柱状图
  75. itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
  76. data:[28, 29, 31, 30, 37, 46, 44]//数据
  77. }
  78. ]
  79. });
  80. // 使用刚指定的配置项和数据显示图表。
  81. myChart.setOption(option);
  82. </script>
  83. </body>
  84. </html>

最终的效果如下:

图  1


图 3 坐标轴设置示例

编程要求

根据提示,在右侧编辑器BeginEnd之间补充代码(有三处)。实现如下的需求:

  • 网格的左上角坐标为(130, 60)
  • 网格的宽度为70%,高度为40%
  • 网格的背景色为#eeffff
  • x轴和y轴的坐标轴的名字都在end处。

测试说明

我们将调用浏览器接口,打开你修改的这段代码生成的网页,并截图获取其中的图像,和正确的图像进行对比,从而判断你补充的程序是否正确,正确将输出:“图像对比一致,恭喜通关!”

同时我们将展示你生成的图像和正确的图像,你可以通过观察图像的方式修改自己尚未通过的代码。

测试输入: 预期输出:图像对比一致,恭喜通关!

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
	<script type="text/JavaScript" src="../static/echarts.min.js"></script>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>

    <script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    myChart.setOption({
        grid: {
            show:true,
            /********* Begin *********/
            x:130,
            y:60,
            width:'70%',
            height:'40%',
            backgroundColor:'#eeffff'

            /********* End *********/
        },
        title : {
            text : "某商场各门店一周销售额",//标题
            left:'center'
        },
        tooltip : {
        },
        legend: {
            orient: 'vertical',
            x:10,
            y:10,
            data:['优衣库', '海底捞', '肯德基', '小米之家', '李宁']//图例
        },
        xAxis : [
          {
              show : true,
              name: '星期',
              /********* Begin *********/
                namelocation:'end',

              /********* End *********/
              type : 'category',//表示x轴的每一项由几组数据组成
              data : ['周一','周二','周三','周四','周五','周六','周日']//x轴标题
          }
        ],
        yAxis : [
          {
               show : true,
               name: '销量(万元)',
               /********* Begin *********/
                namelocation:'end',

               /********* End *********/
              type : 'value'//每一项都是数据
          }
        ],
        series : [
             {
                 name:'优衣库',//数据的名字
                 type:'line',//表示柱状图
                 itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
                 data:[33, 35, 38, 36, 35, 45, 48]//数据
             },
              {
                 name:'海底捞',//数据的名字
                 type:'line',//表示柱状图
                 itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
                 data:[67, 65, 69, 70, 81, 102, 105]//数据
             },
              {
                 name:'肯德基',//数据的名字
                 type:'line',//表示柱状图
                 itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
                 data:[38, 36, 38, 40, 50, 60, 65]//数据
             },
              {
                 name:'小米之家',//数据的名字
                 type:'line',//表示柱状图
                 itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
                 data:[57, 55, 56, 58, 65, 74, 75]//数据
             },
              {
                 name:'李宁',//数据的名字
                 type:'line',//表示柱状图
                 itemStyle : { normal: {label : {show: true, position: 'insideRight'}}},//柱子样式
                 data:[28, 29, 31, 30, 37, 46, 44]//数据
             }
         ]
    });

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);

    </script>
</body>
</html>

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值