如何用列表推导式绘制独立Matplotlib图表?(单行代码实现)
解决Matplotlib列表推导式生成独立图表的问题
嘿,这个问题我熟!你现在的代码之所以会产出重叠的图表,是因为plt.plot()默认会在当前激活的同一个画布(figure)上绘制所有线条。要生成两个独立的图表,关键是每次绘制前都创建一个新的画布就行,用单行列表推导式就能实现。
单行解决方案代码
import matplotlib.pyplot as plt test = [[1, 2, 3, 4],[5, 6, 7, 8]] # 单行列表推导式生成两个独立图表 [plt.figure() or plt.plot(item) for item in test] plt.show()
代码解释
plt.figure():每次调用都会创建一个全新的空白画布,这是让图表独立的核心。- 用
or连接是因为plt.figure()会返回一个Figure对象(属于真值),所以or后面的plt.plot(item)会被执行,同时把新画布设为当前活跃画布,这样每个线条都会画在自己的画布上。 - 如果你想让代码可读性更强,也可以写成更直观的单行写法:
这个写法用嵌套循环先创建画布再绘图,逻辑更清晰,同样是单行实现。[plt.plot(item) for item in test for _ in [plt.figure()]]
内容的提问来源于stack exchange,提问作者yufiP
相关产品推荐
相关产品推荐

