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

如何将SageMath与Matplotlib绘图合并为单个无重叠图?

解决SageMath与Matplotlib绘图合并问题

问题原因

你当前的代码仅将Sage图形绑定到Matplotlib的figure对象,但Sage的matplotlib()方法默认会在figure中创建新的坐标轴,导致覆盖了原本绘制折线的坐标轴,最终出现重叠覆盖的情况。

解决方案

核心是让Sage图形渲染到已有的Matplotlib坐标轴上,而非创建新坐标轴。只需在调用matplotlib()方法时,额外指定axes=ax参数即可。

修改后的完整代码

import matplotlib.pyplot as plt

# 创建Matplotlib画布和坐标轴
fig, ax = plt.subplots()
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
ax.plot(x, y, label='Matplotlib折线')

# 创建SageMath圆形并绘制到已有坐标轴上
c = circle((1,1),1)
# 指定axes参数,将圆画在已有的ax坐标轴中
c.matplotlib(figure=fig, axes=ax)

# 可选:调整坐标轴范围,确保图形完整显示
ax.axis('equal')
ax.legend()

plt.show()

补充说明

  • 通过axes=ax参数,Sage会直接在你预先创建的坐标轴上绘制图形,避免了新坐标轴的创建和覆盖。
  • 添加ax.axis('equal')可以让坐标轴比例一致,圆形不会显示为椭圆;ax.legend()则可以添加图例区分不同图形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:37:45