echarts 多个markPoint

效果如图:

因为文字的多少是不确定的 所以背景图和小图标要分开来写,也有的说可以用html+css来写这个图标,我试了没成功~。因为是echarts的配置里面的图片不能被file-loader处理到,所以我用了base64的,当然也用绝对路径来代替。 代码:

markPoint: {
              label: {
                normal: {
                  padding: [5, 10, 10, 10],
                  fontSize: 14,
                  color: "#FF9200",
                  align: "center",
                  offset: [0, -30],
                  formatter: [`{a|}`, `{b|建议${month}月${day}日清洗}`].join(""),
                  rich: {
                    a: {
                      backgroundColor: {
                        image:
                          "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABG0lEQVQ4T62TP0sDQRDFf3OBdDamT2OXFHb2IjaivR/AJpCAYGGb1kIiXsAmH8ImNiFFPkAKIYHUYidarE1Q7kbuTyRcdiKRbDc7M2/fm3krFI52qRNzgXCMUk3TwgvKgICeNJkut8gi0DZlKtyiNIBSETiPI4QH3rmSNl8ZNpA27/IEHBmNxeshH5wkIBlASIjS9DQ/IsxRzldyQldatCTX/OylHbFHhKPMmwc8ImBf9J4OcOmlXqJGgOObV0PanWjIBKXuLYg5ABwBM29emCYMHLBjFBwiOGLGBoPP9QAxZzmDkQ2wTgL0gDl4N5SYIJVgDxFu8pev7SFm1vWvEU5RFKFvrvEPI9nGXBhpK1b+BfnvZ1rmuel3/gEna3Cfd8+7ZgAAAABJRU5ErkJggg=="
                      },
                      width: 16,
                      height: 16
                    },
                    b: {
                      color: "#FF9200",
                      lineHeight: 20,
                      padding: [0, 0, 0, 5]
                    }
                  }
                },
                emphasis: {
                  show: false
                }
              },
              data: [
                {
                  coord: [`${year}-${fullMonth}-${fullDay}`, this.data.value],
                  symbolSize: [1, 1],
                  label: {
                    normal: {
                      show: isShowPoint,
                      backgroundColor: {
                        image:
                          "data:image/png;base64,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"
                      },
                      rich: {
                        a: {
                          color: "#FF9200"
                        }
                      }
                    },
                    emphasis: {
                      show: false
                    }
                  }
                },{
                  coord: [`${year}-${fullMonth}-${fullDay}`, this.data.value],
                  symbolSize: [1, 1],
                  label: {
                    normal: {
                      show: isShowPoint,
                      offset: [0, 0],
                      formatter: [`{a|}`].join(""),
                      backgroundColor: {
                        image: "transparent"
                      },
                      borderColor: "#f0f",
                      boderWidth: 6,
                      borderRadius: 6,
                      formatter: [`{a|}`].join(""),
                      rich: {
                        a: {
                          width: 18,
                          height: 18,
                          borderColor: "#f0f",
                          boderWidth: 6,
                          borderRadius: 6,
                          backgroundColor: {
                            image: 
                              "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAABb0lEQVRIS7WVu04CURCGv0mMMTGgNhZKg42JlQWFFhZa44U3kMrSSKEBayFaYNTKijcQL9RSWGhBYWW0okELG7mExBiSYxZ2ue0uRORsOfPvt//OOTMjuDwqwRTjbCJsoFgAZkzpB8ILiluq3EiULyeEdAdVijHK7CHsA5NuHzbjRRQneDmVMN/t2g6wSjLLCNdAoA+wO52jxpZEeLcSTbAJfQJ8f4Ra8gI1lix4HVz//QoPAzi1O/ewYpSlAT4jihAf0Gnna4qY7JIQ8/TzwIQj2B+ExQhMm2X/zMFzEvIZNx8lqvhFnbMNpBxVy0cQiDkDcnF4PHSDh0VdcIUiZFMYToN3vauTWXd2LqQNx6/AvI0Qugffam9wIQvpNSfNmwEuAx5bdqcMo/Zwh+6nApdeJ3BFK1hTKTQenqbr1hiPw2yQIlXm9LW01iFUhzdm8XDHpnXDtQz6Jry1mg5cJ16r10oojvuupvbe/O8y/QUfS6N/V40yfwAAAABJRU5ErkJggg=="
                          },
                        }
                      }
                    },
                    emphasis: {
                      show: false
                    }
                  }
                }
              ]
            }

 

如果您要在 ECharts设置多个 `markPoint` 并且每个 `markPoint` 都包含一个 SVG 图形,您可以在 `data` 中为每个 `markPoint` 指定一个 `symbol`,并在 `symbol` 中定义一个包含 SVG 图形的 `<div>` 元素。例如: ```javascript option = { // ... 其他配置项 ... series: [ { name: '访问量', type: 'line', data: [820, 932, 901, 934, 1290, 1330, 1320], markPoint: { data: [ { name: '最高点', value: 1290, xAxis: 4, yAxis: 1290, symbol: ` <div> <svg width="32" height="32"> <circle cx="16" cy="16" r="16" fill="#ff0000" /> </svg> </div> ` }, { name: '最低点', value: 820, xAxis: 0, yAxis: 820, symbol: ` <div> <svg width="32" height="32"> <rect x="0" y="0" width="32" height="32" fill="#00ff00" /> </svg> </div> ` } ] } } ] }; ``` 在上面的代码中,我们为 `markPoint` 中的每个点指定了一个 `symbol`,其中包含一个用于呈现 SVG 图形的 `<div>` 元素。`<div>` 元素中的 SVG 图形可以使用标准的 SVG 代码编写,以及 CSS 样式来设置 SVG 图形的样式。 在 ECharts 中使用 SVG 图形时,需要注意一些细节问题。首先,需要使用反引号(`)来定义 `symbol` 字符串,以便可以在字符串中包含换行符和其他特殊字符。其次,由于 `<div>` 元素中包含了 SVG 图形,因此需要为 `<div>` 元素设置一些 CSS 样式,以便正确呈现 SVG 图形。例如,我们可以为 `<div>` 元素设置以下 CSS 样式: ```css div { display: inline-block; width: 32px; height: 32px; text-align: center; vertical-align: middle; } ``` 这些样式将 `<div>` 元素设置为一个 32x32 的块级元素,并使其中的 SVG 图形垂直和水平居中对齐。 最后,需要注意的是,如果您想在 SVG 图形中使用事件或动画效果,可以将 SVG 图形保存为单独的文件,并使用 `<img>` 元素来引用它们。然后,您可以在 `symbol` 中使用 `<img>` 元素来指定 SVG 图形的路径。例如: ```javascript symbol: '<img src="path/to/your/svg/file.svg" />' ``` 这样做可以使 SVG 图形的代码更简洁,同时也可以让 SVG 图形的事件和动画效果更易于管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值