echarts1.html

本文展示了如何使用ECharts库在一个400x400px的粉色背景div中创建一个饼图,展示网站访问来源的假想数据,包括搜索引擎、直接访问等。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>黑马echarts</title>
    <script src="../js/echarts.min.js"></script>
    <style>
        .box {
            width: 400px;
            /* 设置盒子的宽度为 400 像素 */
            height: 400px;
            /* 设置盒子的高度为 400 像素 */
            background-color: pink;
            /* 设置盒子的背景颜色为粉红色 */
        }
    </style> <!-- 在 head 标签中定义了一个内部样式表,在其中定义了一个名为 .box 的 CSS 类,用于设置盒子的样式 -->

</head>

<body>
    <div class="box"></div> <!-- 创建一个 div 元素,并给它添加类名为 box,这个 div 元素将会应用之前在样式表中定义的 .box 类的样式 -->
    <script>
        var myChart = echarts.init(document.querySelector('.box'));
        option = {
            title: {
                text: 'Referer of a Website',
                subtext: 'Fake Data',
                left: 'center'
            },
            tooltip: {
                trigger: 'item'
            },
            legend: {
                orient: 'vertical',
                left: 'left'
            },
            series: [
                {
                    name: 'Access From',
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: 'Search Engine' },
                        { value: 735, name: 'Direct' },
                        { value: 580, name: 'Email' },
                        { value: 484, name: 'Union Ads' },
                        { value: 300, name: 'Video Ads' }
                    ],
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    }
                }
            ]
        };


        myChart.setOption(option); // 将配置项和数据应用到图表中,以显示出柱状图

    </script>


</body>

</html>

### 关于 ECharts `getWidth` 方法的错误分析 在处理 ECharts 的 `getWidth` 方法时,如果遇到特定行号上的错误(如第 10871 行、24397 行等),通常是因为以下几个原因: #### 可能的原因及解决方案 1. **DOM 元素未正确加载** 如果调用 `getWidth` 方法时 DOM 元素尚未完全渲染到页面上,则可能导致返回值异常或抛出错误。确保初始化图表之前,目标容器已存在于文档流中[^1]。 解决方法是在确保 DOM 容器可用后再实例化图表对象: ```javascript document.addEventListener('DOMContentLoaded', function () { var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); // 初始化配置... }); ``` 2. **样式属性缺失** 当目标容器缺少宽度定义时,可能会导致计算失败。检查 CSS 是否设置了明确的宽高属性。 确保 HTML 和 CSS 如下所示: ```html <div id="main" style="width: 600px; height: 400px;"></div> ``` 或者通过动态设置宽度来解决问题: ```javascript var container = document.getElementById('main'); container.style.width = '100%'; container.style.height = '500px'; ``` 3. **依赖库版本不匹配** 使用不同版本的 ECharts 库可能引发兼容性问题。确认当前使用的 `echarts.min.js` 版本与项目需求一致。 验证方式如下: ```javascript console.log(echarts.version); // 输出当前版本号 ``` 4. **异步数据加载延迟** 若图表的数据源来自网络请求或其他异步操作,在数据到达前尝试获取尺寸也可能触发错误。建议等待数据完成加载再执行相关逻辑: ```javascript fetch('/api/data') .then(response => response.json()) .then(data => { var chartInstance = echarts.init(document.getElementById('main')); chartInstance.setOption({ series: [{ data: data, type: 'bar' }] }); }); ``` 5. **多线程冲突** 在复杂场景下,多个脚本同时修改同一 DOM 节点的状态会干扰正常行为。排查是否有其他插件或者框架影响到了该节点的操作流程。 --- ### 提供的代码片段调整示例 以下是针对上述常见问题的一个综合修正方案: ```javascript // 确认 DOM 已准备好 document.addEventListener('DOMContentLoaded', function () { const mainDiv = document.getElementById('main'); if (!mainDiv) { throw new Error('Container element not found!'); } // 设置默认大小以防为空 mainDiv.style.width = '100%'; mainDiv.style.height = '500px'; try { const chart = echarts.init(mainDiv); window.onresize = function () { chart.resize(); }; chart.setOption({ title: { text: 'Sample Chart' }, tooltip: {}, xAxis: { data: ['A', 'B', 'C'] }, yAxis: {}, series: [{ name: 'Values', type: 'line', data: [120, 200, 150] }] }); } catch (error) { console.error('Error initializing ECharts:', error.message); } }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值