转:ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?

摘要:
我只能这样回答这个问题。ECharts图表的主题(皮肤)就像人们的衣服一样。它用来衬托和渲染主题,使其更加美丽。您已经访问了ECharts图表组件的官方网站,您应该看到每个示例都支持皮肤切换。为了解决这个问题,ECharts图表组件为我们提供了一个方法init和setTheme(

一、什么是ECharts图表的皮肤(主题)?

针对这个问题我只能这样回答,ECharts图表的主题(皮肤)就犹如人的衣服一样,是用来衬托和渲染主体,使其变得更加美观好看的目的。你去过ECharts图表组件的官网应该都看到每一个示例都支持皮肤切换的。我们更深入的理解,皮肤其实就是一些样式的定义集合。

图表有很多部分组成,比如:标题、坐标轴、Series数据、Legend图例等。每一个部分我们可以为其设置style样式,形如:字体颜色、字体大小、旋转角度、背景图片、背景颜色、是否渐变等。

二、如何将其皮肤(主题)应用到ECharts图表上去?

犹如一件衣服我们设计和裁剪缝制好了,那么好不好还得找个人穿上才能够有所体现。ECharts图表也是如此,这里我们定义了一套纯绿色的皮肤option集合,示例代码如下所示:

//定义一套绿色的皮肤
var theme = {
    // 默认色板
    color: [
'#408829', '#68a54a', '#a9cba2', '#86b379',
'#397b29', '#8abb6f', '#759c6a', '#bfd3b7'
],

    // 图表标题
    title: {
        itemGap: 8,
        textStyle: {
            fontWeight: 'normal',
            color: '#408829'
        }
    },

    // 值域
    dataRange: {
        color: ['#1f610a', '#97b58d']
    },

    // 工具箱
    toolbox: {
        color: ['#408829', '#408829', '#408829', '#408829']
    },

    // 提示框
    tooltip: {
        backgroundColor: 'rgba(0,0,0,0.5)',
        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
            type: 'line',         // 默认为直线,可选为:'line' | 'shadow'
            lineStyle: {          // 直线指示器样式设置
                color: '#408829',
                type: 'dashed'
            },
            crossStyle: {
                color: '#408829'
            },
            shadowStyle: {                     // 阴影指示器样式设置
                color: 'rgba(200,200,200,0.3)'
            }
        }
    },

    // 区域缩放控制器
    dataZoom: {
        dataBackgroundColor: '#eee',            // 数据背景颜色
        fillerColor: 'rgba(64,136,41,0.2)',   // 填充颜色
        handleColor: '#408829'     // 手柄颜色
    },

    grid: {
        borderWidth: 0
    },

    // 类目轴
    categoryAxis: {
        axisLine: {            // 坐标轴线
            lineStyle: {       // 属性lineStyle控制线条样式
                color: '#408829'
            }
        },
        splitLine: {           // 分隔线
            lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                color: ['#eee']
            }
        }
    },

    // 数值型坐标轴默认参数
    valueAxis: {
        axisLine: {            // 坐标轴线
            lineStyle: {       // 属性lineStyle控制线条样式
                color: '#408829'
            }
        },
        splitArea: {
            show: true,
            areaStyle: {
                color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)']
            }
        },
        splitLine: {           // 分隔线
            lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                color: ['#eee']
            }
        }
    },

    timeline: {
        lineStyle: {
            color: '#408829'
        },
        controlStyle: {
            normal: { color: '#408829' },
            emphasis: { color: '#408829' }
        }
    },

    // K线图默认参数
    k: {
        itemStyle: {
            normal: {
                color: '#68a54a',          // 阳线填充颜色
                color0: '#a9cba2',      // 阴线填充颜色
                lineStyle: {
                     1,
                    color: '#408829',   // 阳线边框颜色
                    color0: '#86b379'   // 阴线边框颜色
                }
            }
        }
    },

    map: {
        itemStyle: {
            normal: {
                areaStyle: {
                    color: '#ddd'
                },
                label: {
                    textStyle: {
                        color: '#c12e34'
                    }
                }
            },
            emphasis: {                 // 也是选中样式
                areaStyle: {
                    color: '#99d2dd'
                },
                label: {
                    textStyle: {
                        color: '#c12e34'
                    }
                }
            }
        }
    },

    force: {
        itemStyle: {
            normal: {
                linkStyle: {
                    strokeColor: '#408829'
                }
            }
        }
    },

    chord: {
        padding: 4,
        itemStyle: {
            normal: {
                lineStyle: {
                     1,
                    color: 'rgba(128, 128, 128, 0.5)'
                },
                chordStyle: {
                    lineStyle: {
                         1,
                        color: 'rgba(128, 128, 128, 0.5)'
                    }
                }
            },
            emphasis: {
                lineStyle: {
                     1,
                    color: 'rgba(128, 128, 128, 0.5)'
                },
                chordStyle: {
                    lineStyle: {
                         1,
                        color: 'rgba(128, 128, 128, 0.5)'
                    }
                }
            }
        }
    },

    gauge: {
        startAngle: 225,
        endAngle: -45,
        axisLine: {            // 坐标轴线
            show: true,        // 默认显示,属性show控制显示与否
            lineStyle: {       // 属性lineStyle控制线条样式
                color: [[0.2, '#86b379'], [0.8, '#68a54a'], [1, '#408829']],
                 8
            }
        },
        axisTick: {            // 坐标轴小标记
            splitNumber: 10,   // 每份split细分多少段
            length: 12,        // 属性length控制线长
            lineStyle: {       // 属性lineStyle控制线条样式
                color: 'auto'
            }
        },
        axisLabel: {           // 坐标轴文本标签,详见axis.axisLabel
            textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                color: 'auto'
            }
        },
        splitLine: {           // 分隔线
            length: 18,         // 属性length控制线长
            lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                color: 'auto'
            }
        },
        pointer: {
            length: '90%',
            color: 'auto'
        },
        title: {
            textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                color: '#333'
            }
        },
        detail: {
            textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                color: 'auto'
            }
        }
    },

    textStyle: {
        fontFamily: '微软雅黑, Arial, Verdana, sans-serif'
    }
};

这样看代码就应该很清楚了,的确就是一些样式的定义。

皮肤我们定义好了,那么我们接下来要如何应用到图表中去呢?针对这样一个问题,ECharts图表组件给我们提供了一个方法init(dom,[theme]) 和setTheme(theme)方法

名称参数描述
{ECharts}init{dom} dom, 
{string | Object =}theme
初始化接口,返回ECharts实例,其中dom为图表所在节点,theme为可选的主题,内置主题(暂无)直接传入名称,自定义扩展主题可传入主题对象

从上方的方法描述看不难看出我们要应用皮肤至图表内就需要通过这个方法接口去实现。

1.//图表对象渲染和皮肤的应用
2.myChart = ec.init(document.getElementById('main'), theme);

这样我们的皮肤配置就应用到图表对象中去了,只要我们为其设置好数据即可完美呈现出来了的。

ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?

完整示例代码如下所示:

<!DOCTYPE html>
<html>
<head runat="server">
    <title>ECharts图表组件主题(皮肤)的应用示例 || www.stepday.com</title>
    <meta charset="utf-8" />
    <script src="www/js/esl.js"></script>
    <script src="www/js/echarts.js" type="text/javascript"></script>
</head>
<body>
    <!--定义页面图表容器-->
    <!-- 必须制定容器的大小(height、width) -->
    <div id="main" style="height: 400px; 500px; border: 1px solid #ccc; padding: 10px;">
    </div>
    <script type="text/javascript" language="javascript">
        // Step:4 require echarts and use it in the callback.
        // Step:4 动态加载echarts然后在回调函数中开始使用,注意保持按需加载结构定义图表路径
        require(
        [
            'echarts',
            'echarts/chart/line' //按需加载图表关于线性图、折线图的部分
        ],
        DrawEChart //异步加载的回调函数绘制图表
        );

        var myChart;

        //创建ECharts图表方法
        function DrawEChart(ec) {
            //定义一套绿色的皮肤
            var theme = {
                // 默认色板
                color: [
        '#408829', '#68a54a', '#a9cba2', '#86b379',
        '#397b29', '#8abb6f', '#759c6a', '#bfd3b7'
    ],

                // 图表标题
                title: {
                    itemGap: 8,
                    textStyle: {
                        fontWeight: 'normal',
                        color: '#408829'
                    }
                },

                // 值域
                dataRange: {
                    color: ['#1f610a', '#97b58d']
                },

                // 工具箱
                toolbox: {
                    color: ['#408829', '#408829', '#408829', '#408829']
                },

                // 提示框
                tooltip: {
                    backgroundColor: 'rgba(0,0,0,0.5)',
                    axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                        type: 'line',         // 默认为直线,可选为:'line' | 'shadow'
                        lineStyle: {          // 直线指示器样式设置
                            color: '#408829',
                            type: 'dashed'
                        },
                        crossStyle: {
                            color: '#408829'
                        },
                        shadowStyle: {                     // 阴影指示器样式设置
                            color: 'rgba(200,200,200,0.3)'
                        }
                    }
                },

                // 区域缩放控制器
                dataZoom: {
                    dataBackgroundColor: '#eee',            // 数据背景颜色
                    fillerColor: 'rgba(64,136,41,0.2)',   // 填充颜色
                    handleColor: '#408829'     // 手柄颜色
                },

                grid: {
                    borderWidth: 0
                },

                // 类目轴
                categoryAxis: {
                    axisLine: {            // 坐标轴线
                        lineStyle: {       // 属性lineStyle控制线条样式
                            color: '#408829'
                        }
                    },
                    splitLine: {           // 分隔线
                        lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                            color: ['#eee']
                        }
                    }
                },

                // 数值型坐标轴默认参数
                valueAxis: {
                    axisLine: {            // 坐标轴线
                        lineStyle: {       // 属性lineStyle控制线条样式
                            color: '#408829'
                        }
                    },
                    splitArea: {
                        show: true,
                        areaStyle: {
                            color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)']
                        }
                    },
                    splitLine: {           // 分隔线
                        lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                            color: ['#eee']
                        }
                    }
                },

                timeline: {
                    lineStyle: {
                        color: '#408829'
                    },
                    controlStyle: {
                        normal: { color: '#408829' },
                        emphasis: { color: '#408829' }
                    }
                },

                // K线图默认参数
                k: {
                    itemStyle: {
                        normal: {
                            color: '#68a54a',          // 阳线填充颜色
                            color0: '#a9cba2',      // 阴线填充颜色
                            lineStyle: {
                                 1,
                                color: '#408829',   // 阳线边框颜色
                                color0: '#86b379'   // 阴线边框颜色
                            }
                        }
                    }
                },

                map: {
                    itemStyle: {
                        normal: {
                            areaStyle: {
                                color: '#ddd'
                            },
                            label: {
                                textStyle: {
                                    color: '#c12e34'
                                }
                            }
                        },
                        emphasis: {                 // 也是选中样式
                            areaStyle: {
                                color: '#99d2dd'
                            },
                            label: {
                                textStyle: {
                                    color: '#c12e34'
                                }
                            }
                        }
                    }
                },

                force: {
                    itemStyle: {
                        normal: {
                            linkStyle: {
                                strokeColor: '#408829'
                            }
                        }
                    }
                },

                chord: {
                    padding: 4,
                    itemStyle: {
                        normal: {
                            lineStyle: {
                                 1,
                                color: 'rgba(128, 128, 128, 0.5)'
                            },
                            chordStyle: {
                                lineStyle: {
                                     1,
                                    color: 'rgba(128, 128, 128, 0.5)'
                                }
                            }
                        },
                        emphasis: {
                            lineStyle: {
                                 1,
                                color: 'rgba(128, 128, 128, 0.5)'
                            },
                            chordStyle: {
                                lineStyle: {
                                     1,
                                    color: 'rgba(128, 128, 128, 0.5)'
                                }
                            }
                        }
                    }
                },

                gauge: {
                    startAngle: 225,
                    endAngle: -45,
                    axisLine: {            // 坐标轴线
                        show: true,        // 默认显示,属性show控制显示与否
                        lineStyle: {       // 属性lineStyle控制线条样式
                            color: [[0.2, '#86b379'], [0.8, '#68a54a'], [1, '#408829']],
                             8
                        }
                    },
                    axisTick: {            // 坐标轴小标记
                        splitNumber: 10,   // 每份split细分多少段
                        length: 12,        // 属性length控制线长
                        lineStyle: {       // 属性lineStyle控制线条样式
                            color: 'auto'
                        }
                    },
                    axisLabel: {           // 坐标轴文本标签,详见axis.axisLabel
                        textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                            color: 'auto'
                        }
                    },
                    splitLine: {           // 分隔线
                        length: 18,         // 属性length控制线长
                        lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                            color: 'auto'
                        }
                    },
                    pointer: {
                        length: '90%',
                        color: 'auto'
                    },
                    title: {
                        textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                            color: '#333'
                        }
                    },
                    detail: {
                        textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                            color: 'auto'
                        }
                    }
                },

                textStyle: {
                    fontFamily: '微软雅黑, Arial, Verdana, sans-serif'
                }
            };

            //定义图表options
            var options = {
                //图表标题
                title: {
                    text: "ECharts图表皮肤的应用", //正标题
                    link: "http://www.stepday.com", //正标题链接 点击可在新窗口中打开
                    x: "center", //标题水平方向位置
                    subtext: "From:http://www.stepday.com", //副标题
                    sublink: "http://www.stepday.com", //副标题链接
                    //正标题样式
                    textStyle: {
                        fontSize: 24
                    },
                    //副标题样式
                    subtextStyle: {
                        fontSize: 12,
                        color: "red"
                    }
                },
                //数据提示框配置
                tooltip: {
                    trigger: 'axis' //触发类型,默认数据触发,见下图,可选为:'item' | 'axis' 其实就是是否共享提示框
                },
                //图例配置
                legend: {
                    data: ['蒸发量', '降水量'], //这里需要与series内的每一组数据的name值保持一致
                    y: "bottom"
                },
                //工具箱配置
                toolbox: {
                    show: true, //是否显示工具箱
                    feature: {
                        mark: false, // 辅助线标志,上图icon左数1/2/3,分别是启用,删除上一条,删除全部
                        dataView: { readOnly: false }, // 数据视图,上图icon左数8,打开数据视图
                        magicType: ['line', 'bar'],      // 图表类型切换,当前仅支持直角系下的折线图、柱状图转换,上图icon左数6/7,分别是切换折线图,切换柱形图
                        restore: true, // 还原,复位原始图表,上图icon左数9,还原
                        saveAsImage: true  // 保存为图片,上图icon左数10,保存
                    }
                },
                calculable: true,
                //轴配置
                xAxis: [
             {
                 type: 'category',
                 data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
                 name: "月份"
             }
         ],
                //Y轴配置
                yAxis: [
             {
                 type: 'value',
                 splitArea: { show: true },
                 name: "数值"
             }
         ],
                //图表Series数据序列配置
                series: [
             {
                 name: '蒸发量',
                 type: 'line',
                 data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
             },
             {
                 name: '降水量',
                 type: 'line',
                 data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
             }
         ]
            };

            //图表对象渲染和皮肤的应用
            myChart = ec.init(document.getElementById('main'), theme);
            myChart.setOption(options);
        }
    </script>
</body>
</html>

可以将上方的HTML代码复制出来,然后下载下面的两个js修改一下内部js引入地址即可看到被绿色渲染的图表了的。

1、http://echarts.baidu.com/doc/asset/js/esl/esl.js

2、http://echarts.baidu.com/doc/example/www/js/echarts.js

扩充话题:

我们如何将其皮肤做成一个下拉切换的形式呢?其实犹如官方的例子一样,需要将每一种皮肤设置为一个js文件,切换的时候去执行这个js文件,js文件内部包含了皮肤渲染这个动作的。

myChart.setTheme(curTheme);

免责声明:文章转载自《转:ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在winform DataGridView控件的DataGridViewButtonColumn按钮列中禁用按钮imageMagick下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

echarts基本应用-更改坐标轴文字样式、轴名称、轴刻度、轴线、轴网格、曲线(折线图)、柱体上面显示值(柱状图),鼠标悬浮提示

搞数据展示,很多朋友都会用到免费的echarts,echarts官网也有很详细、很nice的文档。下面我根据我这几天的需求汇总一下经常用到的一些文档 1、axisLabel:{轴文字,在xAxis或者yAxis根下 show: true, textStyle:{ color: '#333', //更改坐标轴文字颜色 fontSize : 12   ...

如何在 Matlab 中绘制带箭头的坐标系

如何在 Matlab 中绘制带箭头的坐标系 如何在 Matlab 中绘制带箭头的坐标系 实现原理 演示效果 完整代码 实现原理 使用 matlab 的绘制函数时,默认设置为一个方框形的坐标系, 图1 如果想要绘制的如下图所示中的带箭头的坐标系,需要如何实现呢? 图2 方法一:通过设置 axis 对象 的属性来调整坐标轴,参考代码如下: % 通过...

【转】 MATLAB界面程序实例学习

下面请跟我一步一步做一个图像处理的程序,如果您坚持做完这个实例,我想MATLAB界面编程对您而言,就没有什么难度了。当然,我这里说的是,您首先要有一定的MATLAB编程基础。还有,我的MATLAB版本是2008a。在2008a以前的版本中没有工具栏编辑器,如果需要工具栏要手动写程序,这个我就不多讲了。好了,废话少说,跟我来吧!在MATLAB的命令窗口(Co...

Excel-漏斗图分析(差异分析)

Excel-漏斗图分析(差异分析) 漏斗图适用于业务流程比较规范、周期长、环节多的流程分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在。在网站分析中,通常用于转化率比较,它不仅能展示用户从进入网站到实现购买的最终转化率,还可以展示每个步骤的转化率,如图9-91所示。 图9-91使用漏斗图展示的网站客户转化率 漏斗图不仅能够提供用户在业务...

D3、EChart、HighChart绘图demol

1.echarts:   <!DOCTYPE html>   <html>   <head>   <meta charset="utf-8">   <title>ECharts</title>   <!-- 引入 echarts.js -->...

[转载]Matlab有用的小工具小技巧

原文地址:Matlab有用的小工具小技巧作者:felonwan 本文随时更新,欢迎转载,注明出处,谢谢合作。 本文内容基本上都经过笔者自身使用,结合经验及思考使用Matlab作图更为方便。记录下来,一是方便自己,二也为方便网友,欢迎多留言交流。 目录: 1.使图形窗口的默认text解释器为latex 2.图形窗口最大化 3.双坐标 4.计时...