You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中实现最高点下方带渐变填充的曲线图?

最高点下方带渐变填充图表实现方案

示例效果图

以下是基于Python Matplotlib库的实现方法,你也可以参考逻辑适配其他可视化工具:

实现逻辑

  • 先获取你的折线数据,定位到数值最高点的坐标
  • 生成你需要的渐变色彩配置
  • 用折线路径作为裁剪蒙版,只保留折线下方到X轴的渐变填充区域

可直接运行的示例代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

# 替换为你自己的实际数据
x = np.linspace(0, 10, 100)
y = np.sin(x) * x

# 定位曲线最高点
peak_index = np.argmax(y)
peak_y = y[peak_index]

# 自定义渐变颜色,这里是从透明过渡到半透明蓝色,可自行修改色值
grad_cmap = LinearSegmentedColormap.from_list('custom_grad', ['#ffffff00', '#2563eb99'])

fig, ax = plt.subplots(figsize=(8, 5))
# 先绘制基础填充区域,用于后续裁剪
base_fill = ax.fill_between(x, 0, y, alpha=0)
# 绘制渐变纹理
x_range = ax.get_xlim()
grad_img = ax.imshow(
    np.linspace(0, 1, 256).reshape(-1, 1),
    extent=[x_range[0], x_range[1], 0, peak_y],
    aspect='auto',
    cmap=grad_cmap,
    zorder=0
)
# 用折线填充路径裁剪渐变,只保留折线下方区域
grad_img.set_clip_path(base_fill.get_paths()[0], transform=ax.transData)

# 绘制折线和最高点标记
ax.plot(x, y, color='#2563eb', linewidth=2.5)
ax.scatter(x[peak_index], peak_y, color='#2563eb', s=60, zorder=3)

plt.show()

如果使用前端可视化库ECharts,可以直接配置系列的areaStyle为线性渐变,同时设置markPoint标记最高点即可,不需要手动计算裁剪路径。


内容的提问来源于stack exchange,提问作者Mahdi Dahouei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:54:06