如何用PyScript渲染多图表?解决图表数据复用重叠问题
解决PyScript中多图表渲染数据重叠的问题
问题根源
第二个图表复用首个图表数据导致重叠,核心原因是重复使用了同一个绘图实例(比如默认的matplotlib.pyplot全局实例),新数据直接追加到已有图表上,而非创建独立的新图表。
解决方案
方案1:为每个图表创建独立的Figure和Axes对象
通过plt.subplots()每次生成新的绘图容器,确保图表之间完全隔离:
import matplotlib.pyplot as plt import numpy as np # 渲染第一个图表 fig1, ax1 = plt.subplots() x1 = np.linspace(0, 10, 100) y1 = np.sin(x1) ax1.plot(x1, y1) ax1.set_title("Plot 1") plt.show() # 渲染第二个独立图表 fig2, ax2 = plt.subplots() x2 = np.linspace(0, 10, 100) y2 = np.cos(x2) ax2.plot(x2, y2) ax2.set_title("Plot 2") plt.show()
方案2:绘制新图表前清除当前绘图状态
如果习惯使用全局plt对象,可在绘制新图表前调用plt.clf()清除当前所有绘图元素:
import matplotlib.pyplot as plt import numpy as np # 渲染第一个图表 x1 = np.linspace(0, 10, 100) y1 = np.sin(x1) plt.plot(x1, y1) plt.title("Plot 1") plt.show() # 清除当前绘图状态,避免数据重叠 plt.clf() # 渲染第二个图表 x2 = np.linspace(0, 10, 100) y2 = np.cos(x2) plt.plot(x2, y2) plt.title("Plot 2") plt.show()
关键注意点
- 优先使用方案1,它能明确控制每个图表的独立状态,避免全局状态带来的隐性问题;
- 若使用其他绘图库(如Plotly),逻辑类似:确保每个图表实例独立,不复用同一个对象。
内容的提问来源于stack exchange,提问作者Adn
相关产品推荐
相关产品推荐

