echarts设置折现图拐点,只需要特定的值才显示拐点(比如:最大值、最小值)

本文介绍如何在ECharts折线图中仅高亮显示最大值和最小值的拐点,提供两种实现方法:一是通过配置symbol参数,二是利用symbol回调函数实现更灵活的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求效果

echarts折线图,只需要显示最大值和最小值的拐点。

红色圆圈标红的是拐点。现在我只想要最大值、最小值显示。

只需要把这个放到一个,echarts在线编辑器就能修改,并看到效果。 

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [150, 230, 224, 218, 135, 147, 260],
        type: 'line'
    }]
};

 二、实现步骤

方案一:

 需要把数据,变成下面这种形式。symbol就是拐点类型,none就是不显示。itemStyle.normal可以设置其样式。具体看api文档。

[
  {
   value:150
  },
{
   value:154
  }
] 

具体代码:

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
    },
    yAxis: {
        type: 'value',
    },
    series: [
        {
            data: [
                {
                    value: 9,
                    symbolSize: 8, //拐点大小

                    itemStyle: {
                        normal: {
                            color: 'red',
                            borderColor: 'red', //拐点边框颜色
                        },
                    },
                },
                {
                    value: 20,
                    symbol: 'none', //拐点样式 不显示
                },
                {
                    value: 15,
                    symbol: 'none', //拐点样式 不显示
                },
                {
                    value: 9,
                    symbol: 'none', //拐点样式 不显示
                },
                {
                    value: 20,
                    symbolSize: 8, //拐点大小
                    itemStyle: {
                        normal: {
                            color: 'red',
                            borderColor: 'red', //拐点边框颜色
                        },
                    },
                },
                {
                    value: 10,
                    symbol: 'none', //拐点样式 不显示
                },
                {
                    value: 15,
                    symbol: 'none', //拐点样式 不显示
                },
            ],
            type: 'line',
        },
    ],
};

echarts折线图设置特定拐点https://www.makeapie.com/editor.html?c=xePqG2zTLi 

方案二:

 利用symbol函数实现

//使用这个 https://www.makeapie.com/editor.html?c=xePqG2zTLi 里面的方法更灵活
let value = [150, 230, 224, 218, 135, 147, 260]; 
let min = Math.min(...value); //计算最小值
let max = Math.max(...value); //计算最大值
console.log(min, max);
option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
    },
    yAxis: {
        type: 'value',
    },
    series: [
        {
            data: [150, 230, 224, 218, 135, 147, 260],
            type: 'line',
            symbol: function (value, params) {
                console.log(params);
                if (value == min || value == max) {
                    return 'circle'; //拐点类型
                } else {
                    return 'none'; //拐点不显示
                }
            },
            itemStyle: {
                normal: {
                    color: 'red',
                    borderColor: 'red', //拐点边框颜色
                    lineStyle: {
                        color: '#ff9c35', //折线颜色
                    },
                },
            },
        },
    ],
};

利用symbol实现特定拐点显示 

echarts官方文档https://echarts.apache.org/zh/option.html#title

echarts社区

总结:

echarts,社区里有很多效果,当官网示例没找到想要的效果可以去,社区里找找。可以自己发布作品。还可以在线编辑,修改。

### 使用 Matplotlib 同时绘制柱状图、折线图和散点图 为了在同一张图表上展示柱状图、折线图以及散点图,并标注最大值最小值,可以按照如下方法实现: #### 导入必要的库 ```python import numpy as np import matplotlib.pyplot as plt ``` #### 准备数据集 定义用于绘图的数据集合,包括横坐标 `x` 和对应的三个不同类型的数序列 `bar_y`, `line_y`, `scatter_x`, `scatter_y`. ```python x = ['A', 'B', 'C', 'D', 'E'] bar_y = [5, 7, 3, 9, 4] line_y = [2, 4, 6, 8, 10] scatter_x = [1, 2, 3, 4, 5] scatter_y = [3, 5, 7, 9, 11] # 计算最大值最小值的位置及其对应以便后续标记 max_bar_idx = bar_y.index(max(bar_y)) min_bar_idx = bar_y.index(min(bar_y)) max_line_val = max(line_y) min_line_val = min(line_y) max_scatter_idx = scatter_y.index(max(scatter_y)) min_scatter_idx = scatter_y.index(min(scatter_y)) ``` #### 设置图形属性 配置字体样式以支持中文显示[^3]。 ```python plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False ``` #### 开始绘图过程 创建一个新的画布对象并指定尺寸;接着依次调用不同的函数来添加各种类型的图表元素到当前的 Axes 对象中去. ```python fig, ax = plt.subplots(figsize=(10, 6)) # 绘制柱状图 ax.bar(x, bar_y, color='skyblue', label='柱状图') # 绘制折线图 ax.plot(x, line_y, marker='o', linestyle='-', color='red', linewidth=2, markersize=8, label='折线图') # 绘制散点图 ax.scatter([chr(65+i) for i in scatter_x], scatter_y, s=[v*10 for v in scatter_y], alpha=.5, c=np.random.rand(len(scatter_x)), cmap="viridis", label='散点图') ``` #### 添加额外的信息 通过文本注解的方式,在适当位置放置表示极大/极小得标签[^2]. ```python for idx, val in enumerate(bar_y): if idx == max_bar_idx or idx == min_bar_idx: ax.text(idx, val + 0.5, f'{val} ({"Max" if idx==max_bar_idx else "Min"})', ha='center', va='bottom', fontsize=9, fontweight='bold') for idx, val in enumerate(line_y): if val == max_line_val or val == min_line_val: ax.annotate(f'Line {"Max" if val==max_line_val else "Min"}: {val}', xy=(idx, val), xytext=(-20, 20), textcoords='offset points', arrowprops=dict(facecolor='black', shrink=0.05)) ax.scatter(chr(65+max_scatter_idx), max(scatter_y), facecolors='none', edgecolors='r', s=100, label=f'Scatter Max ({max(scatter_y)})') ax.scatter(chr(65+min_scatter_idx), min(scatter_y), facecolors='none', edgecolors='g', s=100, label=f'Scatter Min ({min(scatter_y)})') ``` #### 定义其他细节 最后一步是调整布局参数使得整个图像更加美观整洁,比如设置标题、轴名、网格线等特性[^1]. ```python ax.set_title('综合图表示例:柱状图、折线图与散点图') ax.set_xlabel('类别') ax.set_ylabel('数量') ax.grid(True) ax.legend() plt.tight_layout() plt.show() ``` 上述代码展示了如何利用 Matplotlib 库在一个单一窗口内组合多种类型的统计图表,并且能够有效地突出重要的特征点——即各个系列中的最高最低记录。这不仅有助于直观理解复杂多样的数据分析结果,同时也增加了可视化的趣味性和表现力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

崽崽的谷雨

漫漫前端路,摸爬滚打

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值