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

使用matplotlib fill_between绘制参数曲线时出现多余线条的问题求助

参数曲线使用fill_between出现多余线条的问题与修复

问题原因

确实是参数方程导致的。fill_between的工作逻辑是按x轴坐标的顺序,在每个x对应的y值与基准线(默认y=0)之间填充区域。但你用的心形线参数方程中,x坐标随t变化时会出现非单调波动(先增后减、反向变化),当x重复或反向时,fill_between会错误地在不同x对应的y点之间画连接线,就出现了那些多余的横竖线条。

修复方法

直接用fill函数替换fill_between即可。fill是专门为闭合参数曲线设计的填充工具,它会沿着参数t的顺序连接曲线点,填充围成的内部区域,不会产生多余线条。

修改后的代码:

import matplotlib.pyplot as plt
import numpy as np
t = np.linspace(0, 2 * np.pi, 100)
x = 16 * np.sin(t)**3
y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2*np.cos(3*t) - np.cos(4*t)
plt.plot(x,y, 'red', linewidth=2)
plt.fill(x, y, color='red', alpha=0.2)  # 替换fill_between为fill
plt.axis('equal')  # 可选,让心形比例更准确,避免拉伸变形
plt.show()

补充说明

如果硬要使用fill_between,需要先对x和y按x的大小排序,但这样会破坏参数曲线的闭合结构,导致填充区域不符合预期,因此不推荐这种方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:50:19