使用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
相关产品推荐
相关产品推荐

