[echarts] 3D圆筒柱状图

在这里插入图片描述

xData = ["正常设备", "报警设备", "离线设备", "故障设备"];
yData = [14350, 298, 5037, 239];
option = {
    backgroundColor: '#061326',
    "grid": {
        "top": "25%",
        "left": "-5%",
        "bottom": "5%",
        "right": "5%",
        "containLabel": true
    },
    tooltip: {
        show: true
    },
    animation: false,
    "xAxis": [{
        "type": "category",
        "data": xData,
        "axisTick": {
            "alignWithLabel": true
        },
        "nameTextStyle": {
            "color": "#82b0ec"
        },
        "axisLine": {
            show: false,
            "lineStyle": {
                "color": "#82b0ec"
            }
        },
        "axisLabel": {
            "textStyle": {
                "color": "#fff"
            },
            margin: 30
        }
    }],
    "yAxis": [{
        show: false,
        "type": "value",
        "axisLabel": {
            "textStyle": {
                "color": "#fff"
            },
        },
        "splitLine": {
            "lineStyle": {
                "color": "#0c2c5a"
            }
        },
        "axisLine": {
            "show": false
        }
    }],
    "series": [{
            "name": "",
            type: 'pictorialBar',
            symbolSize: [40, 10],
            symbolOffset: [0, -6],
            symbolPosition: 'end',
            z: 12,
            // "barWidth": "0",
            "label": {
                "normal": {
                    "show": true,
                    "position": "top",
                    // "formatter": "{c}%"
                    fontSize: 15,
                    fontWeight: 'bold',
                    color: '#34DCFF'
                }
            },
            color: "#2DB1EF",
            data: yData
        },
        {
            name: '',
            type: 'pictorialBar',
            symbolSize: [40, 10],
            symbolOffset: [0, 7],
            // "barWidth": "20",
            z: 12,
            "color": "#2DB1EF",
            "data": yData
        },
        {
            name: '',
            type: 'pictorialBar',
            symbolSize: [50, 15],
            symbolOffset: [0, 12],
            z: 10,
            itemStyle: {
                normal: {
                    color: 'transparent',
                    borderColor: '#2EA9E5',
                    borderType: 'solid',
                    borderWidth: 1
                }
            },
            data: yData
        },
        {
            name: '',
            type: 'pictorialBar',
            symbolSize: [70, 20],
            symbolOffset: [0, 18],
            z: 10,
            itemStyle: {
                normal: {
                    color: 'transparent',
                    borderColor: '#19465D',
                    borderType: 'solid',
                    borderWidth: 2
                }
            },
            data: yData
        },
        {
            type: 'bar',
            //silent: true,
            "barWidth": "40",
            barGap: '10%', // Make series be overlap
            barCateGoryGap: '10%',
            itemStyle: {
                normal: {
                    color: new echarts.graphic.LinearGradient(0, 0, 0, 0.7, [{
                            offset: 0,
                            color: "#38B2E6"
                        },
                        {
                            offset: 1,
                            color: "#0B3147"
                        }
                    ]),
                    opacity: .8
                },
            },
            data: yData
        }
    ]
};

参考:

Vue echart实现柱状图,电池图,3D柱图和3D圆柱图代码详解

### 如何在 ECharts 中实现 3D 柱状图的累加堆叠效果 ECharts 是一款功能强大且灵活的数据可视化工具,支持多种表形式,其中包括 3D 表。虽然官方文档中并未直接提供关于 3D 柱状图累加堆叠的具体示例,但可以通过自定义配置来实现这一需求。 #### 配置项解析 为了实现 3D 柱状图的累加堆叠效果,可以利用 `series` 的分组特性以及 `stack` 属性[^1]。以下是具体方法: 1. **启用堆叠模式** 在 `series` 数据部分,通过设置相同的 `stack` 名称,可以让多个系列在同一位置上叠加显示。例如: ```javascript series: [ { type: 'bar3D', stack: 'groupA', // 设置相同名称以实现堆叠 data: [...], }, { type: 'bar3D', stack: 'groupA', // 同名即可实现累加堆叠 data: [...], } ] ``` 2. **调整视觉样式** 使用 `itemStyle` 和 `emphasis.itemStyle` 来控制柱体的颜色、透明度以及其他外观属性。这一步对于区分不同数据类别非常重要。 3. **优化坐标轴与视角** 对于 3D 形来说,合理的视角和坐标系范围能够显著提升可读性。可通过以下参数进行调节: - `grid3D.viewControl.rotation`: 控制旋转角度。 - `grid3D.boxWidth`, `grid3D.boxHeight`, `grid3D.boxDepth`: 调整三维空间大小。 - `axisLine.lineStyle.color`: 自定义坐标轴颜色以便更清晰地呈现层次关系。 #### 示例代码 下面是一个完整的例子,展示了如何创建带有累加堆叠效果的 3D 柱状图: ```javascript option = { tooltip: {}, grid3D: { viewControl: { // 视角控制器 alpha: 40, beta: 30, distance: 150 }, boxWidth: 200, boxHeight: 80, boxDepth: 80 }, xAxis3D: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] }, yAxis3D: { type: 'value' }, zAxis3D: { type: 'value' }, series: [{ name: 'Series A', type: 'bar3D', stack: 'stackedGroup', // 定义堆叠组名为 stackedGroup data: [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5]], itemStyle: { color: '#ff7f50' // 设置第一个序列的颜色 } }, { name: 'Series B', type: 'bar3D', stack: 'stackedGroup', // 继续使用同一名字实现堆叠 data: [[0, 2], [1, 3], [2, 4], [3, 5], [4, 6]], itemStyle: { color: '#90ee90' // 设置第二个序列的颜色 } }] }; ``` 此代码片段实现了两个序列 (`Series A` 和 `Series B`) 的累加堆叠,并分别赋予不同的颜色加以区别[^2]。 --- ### 注意事项 尽管上述方法可行,但在实际应用过程中需要注意以下几点: - 如果数据量较大,则可能影响渲染性能; - 当前版本可能存在某些兼容性问题,请确保所使用的 ECharts 版本是最新的稳定版; - 若需进一步定制化交互行为(如点击事件),则需要额外编写逻辑处理函数[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值