plt.streamplot()中broken_streamlines参数失效,如何解决?
解决matplotlib streamplot流线断裂问题
问题根源
你遇到的broken_streamlines参数报错,是因为该参数在matplotlib 3.1.1版本中尚未引入——它是在matplotlib 3.2.0及后续版本才添加的功能,老版本自然不支持这个参数。
方案1:升级matplotlib到支持版本
这是最直接的解决方法:
- 先确认当前matplotlib版本:
import matplotlib print(matplotlib.__version__)
- 通过pip升级(普通环境):
pip install --upgrade matplotlib
如果用conda环境,执行:
conda update matplotlib
- 升级后直接使用参数绘制连续流线:
import matplotlib.pyplot as plt import numpy as np # 替换成你的实际数据 Y, X = np.mgrid[-3:3:100j, -3:3:100j] U = -1 - X**2 + Y V = 1 + X - Y**2 fig, ax = plt.subplots() # 添加broken_streamlines=False参数 ax.streamplot(X, Y, U, V, broken_streamlines=False) plt.show()
方案2:不升级版本的手动修复
如果暂时无法升级matplotlib,可以通过提取流线数据、重新绘制连续线条的方式修复:
import matplotlib.pyplot as plt import numpy as np # 替换成你的实际数据 Y, X = np.mgrid[-3:3:100j, -3:3:100j] U = -1 - X**2 + Y V = 1 + X - Y**2 fig, ax = plt.subplots() # 先绘制默认的断裂流线 stream_obj = ax.streamplot(X, Y, U, V) # 遍历所有流线线段,合并后重新绘制连续线条 line_color = stream_obj.lines.get_edgecolor()[0] for segments in stream_obj.lines.get_segments(): # 合并断裂的线段为连续点列 continuous_points = np.concatenate(segments) ax.plot(continuous_points[:, 0], continuous_points[:, 1], color=line_color) # 隐藏原来的断裂流线 stream_obj.lines.set_visible(False) plt.show()
内容的提问来源于stack exchange,提问作者gniechwiadowicz
相关产品推荐
相关产品推荐

