1. 程式人生 > >使用echarts的一點總結

使用echarts的一點總結

首先要下載最新echarts,舊版可能很多功能不支援

1.餅圖中心寫文字

var myChart = echarts.init(document.getElementById('row-1-1'));
	var option = {
		color:["#53647E","#05B6F0"],
		title: {
           text: '23.5',
           textStyle: {
               fontSize:18,
               //fontFamily:'sans-serif',
               fontStyle:'normal',
               color:'#05B5EE',
               verticalAlign:"top"
           },                      
           subtext: ['系統總體容量\n'],
           subtextStyle:{
                fontSize:10,
                color: '#05B5EE'
            },
           /*itemGap:'50px',*/
           x: 'center',
           y: 'center',
           top:'35%'
        },
	    tooltip: {
	        trigger: 'item',
	        formatter: "{a} <br/>{b}: {c} ({d}%)"
	    },
	    series: [
	        {
	            //name:'系統容量',
	            type:'pie',
	            radius: ['65%', '80%'],
	            avoidLabelOverlap: false,
	            label: {
	                normal: {
	                    show: false,
	                    position: 'center'
	                },
	                emphasis: {
	                    show: false,
	                    textStyle: {
	                        fontSize: '30',
	                        fontWeight: 'bold'
	                    }
	                }
	            },
	            labelLine: {
	                normal: {
	                    show: false
	                }
	            },
	            data:[
	            	{value:11, name:'系統剩餘容量'},
	                {value:12.5, name:'系統使用容量'},
	                
	            ]
	        }
	    ]
	};
	myChart.setOption(option);

設定title中的text和subtext即可,樣式可以自定義

2.關於座標軸和分割線的設定

var myChart = echarts.init(document.getElementById('row-2-2'));
var option = {
    color: ['#60CF54','#5EB95E','#c23531', '#61a0a8', '#d48265', '#91c7ae','#749f83',  '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3'],
    tooltip : {
        trigger: 'axis',
        axisPointer : {            // 座標軸指示器,座標軸觸發有效
            type : 'shadow'        // 預設為直線,可選為:'line' | 'shadow'
        }
    },
    grid: {
    	top:'15%',
        left: '3%',
        right: '4%',
        bottom: '5%',
        containLabel: true,
        borderColor:"#F5F5F5"
    },
    xAxis :{  //x座標
        type : 'category',
        data : [],
        axisTick: {  //刻度
        	show:false,  //不顯示刻度
        },
        show:false, //橫座標直接不顯示
    },
    yAxis : [
        {
            type : 'value',
            nameTextStyle: {
            	color:'#fff'
            },
            axisLine:{   //座標軸軸線
            	show:false, //不顯示座標線
            	lineStyle:{
            		color:'#fff'
            	}
            },
            splitNumber:1,  //左邊分割數,1位分割一次
            axisTick: {  //刻度
	        	show:false,  //不顯示刻度
	        },
            axisLabel:{  //刻度標籤
            	color:"white",
            	show:true,
            	fontSize:10
            },
            splitLine: {
            	show:false  //分割線
            }
        }
    ],
    series : [{
		type:"bar",
		barCategoryGap:'50%',
		data:[100,80,60,50,20,60,70,90,20,100,50]
    }]
};
myChart.setOption(option);

主要就是設定xAxis和yAxis中的axisLine,axisLabel,axisTick,splitLine,splitNumber等,具體引數看手冊即可

3.關於柱狀圖改變柱子間隔問題

series : [{
	type:"bar",
	barCategoryGap:'50%',
	data:[100,80,60,50,20,60,70,90,20,100,50]
}]

如果只有一組資料,想調整柱子間隔,在series中使用barCategoryGap調整即可

如果有多組資料,則需要使用barGap來調整類目之間的間距

4.關於一組資料改變柱狀圖顏色問題

series : [{
	type:"bar",
	barCategoryGap:'70%',
	data:[100,80,60,50,20],
	itemStyle: {
            normal:{  
            color: function (params){
                var colorList = ['#455B72','#A5AFB5','#D44191', '#45A5D5', '#15BCB5'];
                return colorList[params.dataIndex];
            }
        },
  },
  markLine : {
        data : [
            {type : 'average', name: '平均值'}
        ],
        lineStyle: {
			color: '#ddd',
			width: 1,
			type: 'dashed',
			/*shadowBlur: ...,
			shadowColor: ...,
			shadowOffsetX: 0,
			shadowOffsetY: 0,
			opacity: ...,
			curveness: 0,*/
		}
    }
}]

在series中設定itemStyle,像這個設定顏色即可

5.關於折線圖不同數值區間顏色不同問題

var option = {
    title: {
        text: 'ECharts 入門示例'
    },
    tooltip: {},
    legend: {
        data:['銷量']
    },
    xAxis: {
        data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
    },
    yAxis: {},
    visualMap: {//區間內控制顯示顏色
        show: false,
        dimension: 1,
        pieces: [[{gte: 7, lte: 15, color: '#7547A2'},{gte: 15, lte: 30, color: '#000'}]],//設定折線什麼區間顯示什麼顏色
        seriesIndex:0,       
        outOfRange: {  //設定區間外的顏色
            color: 'red'
        }
    },
    series: [{
        name: '銷量',
        type: 'line',
        areaStyle: {normal: {}},//加上這個使折線下方填充顏色

        data: [5, 20, 36, 10, 10, 20]
    }
    ]
};

在visualMap中設定pieces,其中可設定最大最小區間內折線的顏色,series中如果設定了areaStyle,則對應的區間內填充顏色也會相應改變,就像圖中那樣

附visualMap的配置

visualMap=[                                     //視覺對映元件,用於進行『視覺編碼』,也就是將資料對映到視覺元素。視覺元素可以是:symbol: 圖元的圖形類別。symbolSize: 圖元的大小。color: 圖元的顏色。
                                                 // colorAlpha: 圖元的顏色的透明度。opacity: 圖元以及其附屬物(如文字標籤)的透明度。colorLightness: 顏色的明暗度。colorSaturation: 顏色的飽和度。colorHue: 顏色的色調。
    {
        show:true,                              //是否顯示 visualMap-continuous 元件。如果設定為 false,不會顯示,但是資料對映的功能還存在
        type: 'continuous',                     // 定義為連續型 viusalMap
        min:10,                                  //指定 visualMapContinuous 元件的允許的最小值
        max:100,                                 //指定 visualMapContinuous 元件的允許的最大值
        range:[15, 40],                          //指定手柄對應數值的位置。range 應在 min max 範圍內
        calculable:true,                        //是否顯示拖拽用的手柄(手柄能拖拽調整選中範圍)
        realtime:true,                          //拖拽時,是否實時更新
        inverse:false,                          //是否反轉 visualMap 元件
        precision:0,                            //資料展示的小數精度,預設為0,無小數點
        itemWidth:20,                           //圖形的寬度,即長條的寬度。
        itemHeight:140,                         //圖形的高度,即長條的高度。
        align:"auto",                           //指定元件中手柄和文字的擺放位置.可選值為:'auto' 自動決定。'left' 手柄和label在右。'right' 手柄和label在左。'top' 手柄和label在下。'bottom' 手柄和label在上。
        text:['High', 'Low'],                   //兩端的文字
        textGap:10,                              //兩端文字主體之間的距離,單位為px
        dimension:2,                            //指定用資料的『哪個維度』,對映到視覺元素上。『資料』即 series.data。 可以把 series.data 理解成一個二維陣列,其中每個列是一個維度,預設取 data 中最後一個維度
        seriesIndex:1,                          //指定取哪個系列的資料,即哪個系列的 series.data,預設取所有系列
        hoverLink:true,                         //滑鼠懸浮到 visualMap 元件上時,滑鼠位置對應的數值 在 圖表中對應的圖形元素,會高亮
        inRange:{                               //定義 在選中範圍中 的視覺元素
            color: ['#121122', 'rgba(3,4,5,0.4)', 'red'],
            symbolSize: [30, 100]
        },
        outOfRange:{  //定義 在選中範圍外 的視覺元素。
            color: ['#121122', 'rgba(3,4,5,0.4)', 'red'],
            symbolSize: [30, 100]
        },
        zlevel:0,                                   //所屬圖形的Canvas分層,zlevel 大的 Canvas 會放在 zlevel 小的 Canvas 的上面
        z:2,                                         //所屬元件的z分層,z值小的圖形會被z值大的圖形覆蓋
        left:"center",                              //元件離容器左側的距離,'left', 'center', 'right','20%'
        top:"top",                                   //元件離容器上側的距離,'top', 'middle', 'bottom','20%'
        right:"auto",                               //元件離容器右側的距離,'20%'
        bottom:"auto",                              //元件離容器下側的距離,'20%'
        orient:"vertical",                         //圖例排列方向
        padding:5,                                   //圖例內邊距,單位px  5  [5, 10]  [5,10,5,10]
        backgroundColor:"transparent",            //標題背景色
        borderColor:"#ccc",                         //邊框顏色
        borderWidth:0,                               //邊框線寬
        textStyle:mytextStyle,                      //文字樣式
        formatter: function (value) {                 //標籤的格式化工具。
            return 'aaaa' + value;                    // 範圍標籤顯示內容。
        }
    },
    {
        show:true,                          //是否顯示 visualMap-continuous 元件。如果設定為 false,不會顯示,但是資料對映的功能還存在
        type: 'piecewise',                  // 定義為分段型 visualMap
        splitNumber:5,                      //對於連續型資料,自動平均切分成幾段。預設為5段
        pieces: [                           //自定義『分段式視覺對映元件(visualMapPiecewise)』的每一段的範圍,以及每一段的文字,以及每一段的特別的樣式
            {min: 1500},                     // 不指定 max,表示 max 為無限大(Infinity)。
            {min: 900, max: 1500},
            {min: 310, max: 1000},
            {min: 200, max: 300},
            {min: 10, max: 200, label: '10 到 200(自定義label)'},
            {value: 123, label: '123(自定義特殊顏色)', color: 'grey'}, // 表示 value 等於 123 的情況。
            {max: 5}                        // 不指定 min,表示 min 為無限大(-Infinity)。
        ],
        categories:['嚴重汙染', '重度汙染', '中度汙染', '輕度汙染', '良', '優'],  //用於表示離散型資料(或可以稱為類別型資料、列舉型資料)的全集
        min:10,                             //指定 visualMapContinuous 元件的允許的最小值
        max:100,                             //指定 visualMapContinuous 元件的允許的最大值
        minOpen:true,                       //介面上會額外多出一個『< min』的選塊
        maxOpen:true,                       //介面上會額外多出一個『> max』的選塊。
        selectedMode:"multiple",           //選擇模式,可以是:'multiple'(多選)。'single'(單選)。
        inverse:false,                      //是否反轉 visualMap 元件
        precision:0,                        //資料展示的小數精度,預設為0,無小數點
        itemWidth:20,                       //圖形的寬度,即長條的寬度。
        itemHeight:140,                     //圖形的高度,即長條的高度。
        align:"auto",                       //指定元件中手柄和文字的擺放位置.可選值為:'auto' 自動決定。'left' 手柄和label在右。'right' 手柄和label在左。'top' 手柄和label在下。'bottom' 手柄和label在上。
        text:['High', 'Low'],               //兩端的文字
        textGap:10,                          //兩端文字主體之間的距離,單位為px
        showLabel:true,                     //是否顯示每項的文字標籤
        itemGap:10,                          //每兩個圖元之間的間隔距離,單位為px
        itemSymbol:"roundRect",             //預設的圖形。可選值為: 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
        dimension:2,                          //指定用資料的『哪個維度』,對映到視覺元素上。『資料』即 series.data。 可以把 series.data 理解成一個二維陣列,其中每個列是一個維度,預設取 data 中最後一個維度
        seriesIndex:1,                        //指定取哪個系列的資料,即哪個系列的 series.data,預設取所有系列
        hoverLink:true,                      //滑鼠懸浮到 visualMap 元件上時,滑鼠位置對應的數值 在 圖表中對應的圖形元素,會高亮
        inRange:{                             //定義 在選中範圍中 的視覺元素
            color: ['#121122', 'rgba(3,4,5,0.4)', 'red'],
            symbolSize: [30, 100]
        },
        outOfRange:{                            //定義 在選中範圍外 的視覺元素。
            color: ['#121122', 'rgba(3,4,5,0.4)', 'red'],
            symbolSize: [30, 100]
        },
        zlevel:0,                                   //所屬圖形的Canvas分層,zlevel 大的 Canvas 會放在 zlevel 小的 Canvas 的上面
        z:2,                                         //所屬元件的z分層,z值小的圖形會被z值大的圖形覆蓋
        left:"center",                              //元件離容器左側的距離,'left', 'center', 'right','20%'
        top:"top",                                   //元件離容器上側的距離,'top', 'middle', 'bottom','20%'
        right:"auto",                               //元件離容器右側的距離,'20%'
        bottom:"auto",                              //元件離容器下側的距離,'20%'
        orient:"vertical",                        //圖例排列方向
        padding:5,                                   //圖例內邊距,單位px  5  [5, 10]  [5,10,5,10]
        backgroundColor:"transparent",            //標題背景色
        borderColor:"#ccc",                         //邊框顏色
        borderWidth:0,                               //邊框線寬
        textStyle:mytextStyle,                      //文字樣式
        formatter: function (value) {                //標籤的格式化工具。
            return 'aaaa' + value;                   // 範圍標籤顯示內容。
        }
    }
];