Echarts坐标轴刻度线宽度美化

Echarts坐标轴刻度线宽度

平时Echarts的y轴刻度线是一条细直线,现在有一个需求是美工设计的刻度线是有宽度的,即粗刻度线还有粗线条设置了颜色,效果比较好,所以这个是必须要实现的:
这里写图片描述
- echarts刻度线的宽度是可以设置的,利用yAxis的splitLine下的lineStyle里面的width可以设置宽度,之后刻度线是变宽了,但是0刻度的线也变粗了
这里写图片描述
- 翻阅Echarts的配置项,发现color的颜色配置可以是数组形式的,echarts会根据数组来循环使用数组的颜色给刻度线使用,于是我想到了,如果数组大于刻度线的数量的话,数组就不会循环使用,相当于按顺序给每条刻度线上色,那第一条刻度线设置成透明色就可以了

这里写图片描述

配置代码奉上

代码块语法遵循标准Echarts代码,可直接放到Echarts官网示例中运行:

var names = ['山东省','天桥区','寿光市','昌邑市','微山县','嘉祥县','梁山县','罗庄区','河东区','宁津县','庆云县','齐河县','夏津县','武城县','乐陵市','东昌府区','阳谷县','茌平县','冠县','临清市'];
var value = [50, 90, 90, 86, 81, 78, 74, 70, 64, 46, 41, 36, 34, 30, 28, 26, 23, 17, 12, 7];
var avgStart = [0,50];
var avgEnd = [19, 50];
var avg = 50;
var colorList = [['#47D6E6','#2FBEE0'],['#FFD64F','#FFAC41']];

option = {
        tooltip : {
                trigger: 'axis',
                formatter: function (params) {
                    let res = params[0].axisValue  + "<br/>";
                    for (let i = 0; i < 1; i++) {
                        var series = params[i]; 
                        if (series.data != 0) {
                            res += series.marker + series.seriesName + " : " + series.data + "%<br/>";
                        } 
                    }
                    return res;
                }
            },
            dataZoom: [
               {
                   type: 'inside'
               }
           ],
           backgroundColor: '#ffffff',
            grid:{
                top:"20px",
                left:"40px",
                right:"20px",
                bottom:"50px"
            },
            calculable : true,
            xAxis : [
                {
                    type : 'category',
                    data : names,
                    axisLabel: {
                        rotate:40
                    },
                    axisTick: {
                        //设置地名分割线颜色
                        lineStyle: {
                            color: '#A9A9A9'
                        }
                    },
                    axisLine: {
                        //设置地名及x轴线条颜色
                        show: true,
                        lineStyle: {
                            color: '    #A9A9A9'
                        }
                    }
                }
            ],
            yAxis : [
                {
                    type : 'value',
                    scale:true,
                    axisLine: {
                        show: false
                    },
                    axisTick: {
                        show: false
                    },
                    splitLine: {
                            show: true, 
                            lineStyle: {
                                //设置刻度线粗度(粗的宽度)
                                width:20,
                                //颜色数组,数组数量要比刻度线数量大才能不循环使用
                                color: ['rgba(0, 0, 0, 0)','#EDF9F9','#EDF9F9','#EDF9F9','#EDF9F9','#EDF9F9','#EDF9F9','#EDF9F9','#EDF9F9']
                            }
                    }
                }
            ],
            series : [
                {
                    name:'',
                    type:'bar',
                    barWidth: 26,
                    itemStyle: {
                        normal: {
                            barBorderRadius:[6, 6, 0, 0],
                            color:function (params){
                                var colorIndex = 0;
                                if(params.dataIndex == 0){
                                    colorIndex = 1;
                                }
                                return new echarts.graphic.LinearGradient(0, 0, 0, 1,[
                                 {offset: 0, color: colorList[colorIndex][0]},
                                 {offset: 1, color: colorList[colorIndex][1]}
                           ]);
                            }
                        }
                    },
                    markLine : {
                        data : [
                            [
                                {
                                    name:avg,
                                    coord:avgStart,
                                    itemStyle:{
                                        color: '#DC143C'
                                    }
                                },{
                                    coord:avgEnd
                                }
                            ]
                        ]
                    },
                    data:value
                }
            ]
    };

正在为项目研究中,还有很多不足,望大神指点

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值