echart 个性化拐点图形样式

charts折线图设置拐点图标,可自定义。

<!DOCTYPE html>
<html>
  <head>
    <title>0006.html</title>
    
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
     <script type="text/javascript" src="../js/esl.js"></script>
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
  <script type="text/javascript">
  require.config({
      paths:{ 
          'echarts' : '../js/echarts',
          'echarts/chart/bar' :'../echart2/build/echarts',
          'echarts/chart/line' :'../echart2/build/echarts'

      }
  });
  require(
  [
      'echarts',
      'echarts/chart/line',
      'echarts/chart/bar'
  ],
  //回调函数
  
  DrawEChart   //这里是调用一个函数用于绘制图表
  );

function DrawEChart(ec) {
     var chartContainer = document.getElementById("main");
    var myChart = ec.init(chartContainer);
    var option= {
    tooltip : {
        trigger: 'axis'
    },
    legend: {
        data:['邮件营销','联盟广告','直接访问','搜索引擎']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
            //折线图,柱形图,堆积图,平铺切换
            restore : {show: true},//还原
            saveAsImage : {show: true}
        }
    },
    calculable : true,//是否启用拖拽重计算特性
    xAxis : [
        {
            type : 'category',
            //数值轴两端空白策略,数组内数值代表百分比,[原始数据最小值与最终最小值之间的差额,原始数据最大值与最终最大值之间的差额] 
            boundaryGap : false,
            data : ['周一','周二','周三','周四','周五','周六','周日']
        }
    ],
    yAxis : [
        {
            type : 'value'
        }
    ],
    series : [
        {
            name:'邮件营销',
            type:'line',
            stack: '总量',
            symbol: 'none',
            itemStyle: {
                normal: {
                    areaStyle: {
                        // 区域图,纵向渐变填充
                        color : (function (){
                            var zrColor = require('zrender/tool/color');
                            return zrColor.getLinearGradient(
                                0, 200, 0, 400,
                                [[0, 'rgba(255,0,0,0.8)'],[0.8, 'rgba(255,255,255,0.1)']]//堆积图的渐变色
                            )
                        })()
                    }
                }
            },
            data:[
                120, 132, 301, 134, 
                {value:90, symbol:'droplet',symbolSize:5},
                230, 210
            ]
        },
        {
            name:'联盟广告',
            type:'line',
            stack: '总量',
            smooth: true,
            symbol: 'image://../asset/ico/favicon.png',     // 系列级个性化拐点图形
            symbolSize: 8,
            data:[
                120, 82,
                {
                    value:201,
                    symbol: 'star',  // 数据级个性化拐点图形
                    symbolSize : 15,
                    itemStyle : { normal: {label : {
                        show: true,
                        textStyle : {
                            fontSize : '20',
                            fontFamily : '微软雅黑',
                            fontWeight : 'bold'
                        }
                    }}}
                },
                {
                    value:134,
                    symbol: 'none'
                },
                190, 
                {
                    value : 230,
                    symbol: 'emptypin',
                    symbolSize: 8
                },
            ]
        },
        {
            name:'直接访问',
            type:'line',
            stack: '总量',
            symbol: 'arrow',
            symbolSize: 6,
            symbolRotate: -45,
            itemStyle: {
                normal: {
                    color: 'red',
                    lineStyle: {        // 系列级个性化折线样式
                        width: 2,
                        type: 'dashed'
                    }
                },
                emphasis: {
                    color: 'blue'
                }
            },
            data:[
                320, 332, '-', 334,
                {
                    value: 390,
                    symbol: 'star6',
                    symbolSize : 20,
                    symbolRotate : 10,
                    itemStyle: {        // 数据级个性化折线样式
                        normal: {
                            color: 'yellowgreen'
                        },
                        emphasis: {
                            color: 'orange',
                            label : {
                                show: true,
                                position: 'inside',
                                textStyle : {
                                    fontSize : '20'
                                }
                            }
                        }
                    }
                },
                330, 320
            ]
        },
        {
            name:'搜索引擎',
            type:'line',
            symbol:'emptyCircle',
            itemStyle: {
                normal: {
                    lineStyle: {            // 系列级个性化折线样式,横向渐变描边
                        width: 2,
                        color: (function (){
                            var zrColor = require('zrender/tool/color');
                            return zrColor.getLinearGradient(
                                0, 0, 1000, 0,
                                [[0, 'rgba(255,0,0,0.8)'],[0.8, 'rgba(255,255,0,0.8)']]
                            )
                        })(),
                        shadowColor : 'rgba(0,0,0,0.5)',
                        shadowBlur: 10,
                        shadowOffsetX: 8,
                        shadowOffsetY: 8
                    }
                },
                emphasis : {
                    label : {show: true}
                }
            },
            data:[
                620, 732, 791, 
                {value:734, symbol:'emptyHeart',symbolSize:10},
                890, 930, 820
            ]
        }
    ]};
                            
    myChart.setOption(option);}
</script>
<div id="main" style="height:400px"></div>  
  </body>
</html>
<think>好的,我现在需要解决用户的问题:如何在ECharts中设置折线图空心拐点的背景颜色。用户提到了空心拐点的背景颜色设置,并且可能遇到了颜色影响legend图标的问题,参考了引用[3]。 首先,我要回忆一下ECharts的文档。折线图拐点样式通常在series.itemStyle里配置,而空心效果可能需要设置border相关的属性。比如,symbol(拐点形状)、symbolSize(大小)、itemStyle的borderColor(边框颜色)和borderWidth(边框宽度),以及color(填充颜色)。不过用户想要的是空心拐点的背景颜色,可能是指拐点内部填充颜色,但如果是空心的话,可能color需要设置为透明或者某种颜色,同时边框颜色另外设置。 根据引用[3],用户提到在itemStyle里设置颜色会影响legend的颜色。这可能是因为legend默认会继承series的itemStyle颜色。所以需要找到不影响的设置方法。比如,使用emphasis和normal分开状态,或者在symbol属性中指定颜色? 接下来,我需要查阅ECharts的配置项手册。折线图的symbol可以有多种形状,比如'circle'。空心效果可能需要设置borderWidth和borderColor,并将color设为透明或者白色。例如,设置itemStyle的color为'#fff',borderColor为需要的边框颜色,borderWidth为2,这样拐点显示为空心圆,边框颜色自定义。同时,如果希望hover时填充颜色变化,可能需要配置emphasis下的itemStyle。 不过用户的问题是设置空心拐点的背景颜色,可能是指拐点内部的颜色。但如果是空心,可能内部颜色是透明的,这时候可能需要调整color属性。例如,设置color为'rgba(255,255,255,0)',即完全透明,这样边框颜色可以显示为背景色?或者用户可能误解了空心拐点的背景颜色,实际上需要的是边框颜色? 另外,引用[3]指出,直接在itemStyle设置color会影响legend的颜色。解决办法可能是在symbol的样式里单独设置颜色,而不是在itemStyle里。或者使用series的color属性来指定,但可能需要更具体的配置。 可能的解决方案是:在series的itemStyle中设置borderColor为想要的边框颜色,borderWidth足够大,而color设置为白色或其他背景颜色,同时调整emphasis状态下的颜色。例如: itemStyle: { color: '#fff', // 内部填充颜色 borderColor: 'red', // 边框颜色 borderWidth: 2 }, emphasis: { itemStyle: { color: 'blue' // hover时的内部颜色 } } 这样,拐点会显示为白色填充,红色边框,hover时内部变为蓝色。而legend的颜色可能仍然继承自color,即白色,这可能不符合需求。根据引用[3],用户可能希望legend颜色不受itemStyle的color影响。这时候可能需要单独设置legend的图标颜色,或者在series中设置color属性来覆盖。 另一种方法是在series中设置color属性,这样legend会使用该颜色,而itemStyle中的color可以单独设置拐点的填充颜色。例如: series: [{ type: 'line', color: 'blue', // 控制legend颜色 itemStyle: { color: '#fff', // 拐点填充色 borderColor: 'blue', // 边框颜色 borderWidth: 2 } }] 这样,legend的颜色由series.color决定,而拐点的填充和边框颜色由itemStyle设置,互不影响。 总结步骤: 1. 在series的itemStyle中设置color为内部填充颜色(例如白色)。 2. 设置borderColor为边框颜色,borderWidth调整边框粗细。 3. 如果需要hover效果,配置emphasis下的itemStyle。 4. 确保series的color属性设置为主色,用于legend,避免itemStyle的color覆盖。 最后,验证示例代码是否正确,并考虑用户提到的空心拐点,可能需要将symbol设为'circle',并确保边框和填充颜色正确区分。</think>在ECharts中设置折线图空心拐点的背景颜色,需通过配置`itemStyle`属性,同时注意避免影响legend图标颜色。以下是具体方法: ### 分步说明 1. **设置拐点样式** 在`series`配置项中,通过`itemStyle`定义拐点的填充色(`color`)、边框颜色(`borderColor`)和边框宽度(`borderWidth`): ```javascript series: [{ type: 'line', symbol: 'circle', // 拐点形状为圆形 symbolSize: 10, // 拐点大小 itemStyle: { color: '#fff', // 拐点内部填充颜色(白色) borderColor: 'blue', // 边框颜色 borderWidth: 2 // 边框宽度 }, emphasis: { // hover状态样式 itemStyle: { color: 'yellow', // hover时内部填充颜色 borderColor: 'red' } } }] ``` 2. **避免影响legend颜色** - **方法一**:通过`series.color`单独定义折线颜色,使legend继承此颜色而非拐点颜色: ```javascript series: [{ type: 'line', color: 'blue', // 控制折线及legend颜色 itemStyle: { color: '#fff', // 拐点填充色独立设置 borderColor: 'blue' } }] ``` - **方法二**:使用`legend.itemStyle`直接指定legend图标颜色: ```javascript legend: { itemStyle: { color: 'blue' // 强制设置legend颜色 } } ``` ### 完整示例 ```javascript option = { legend: { data: ['示例折线'] }, xAxis: { type: 'category' }, yAxis: {}, series: [{ name: '示例折线', type: 'line', data: [10, 20, 15, 30], symbol: 'circle', symbolSize: 10, color: 'blue', // 折线颜色及legend颜色 itemStyle: { color: '#fff', // 空心拐点填充色 borderColor: 'blue', // 边框颜色 borderWidth: 2 }, emphasis: { itemStyle: { color: 'rgba(255,255,0,0.8)', // hover时填充色 borderColor: 'red' } } }] }; ``` ### 效果说明 - **默认状态**:拐点显示为白色填充、蓝色边框的空心圆。 - **Hover状态**:拐点填充色变为黄色,边框变为红色。 - **Legend颜色**:通过`series.color`设置为蓝色,与折线颜色一致,不受拐点填充色影响[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值