You need to enable JavaScript to run this app. 如何在SymPy绘图时交换X轴与Y轴?
优惠活动
大模型
产品
解决方案
定价
更多

如何在SymPy绘图时交换X轴与Y轴?

问题概述

我正尝试在Jupyter Notebooks中使用SymPy绘制位置-时间图像,需要将图像的X轴与Y轴互换。

原有代码
import sympy as sym

t = sym.Symbol('t')

f = 6*t**3+5*t**2-3*t+16

sym.plot(f, (t,0,100), title = '1-D motion through time', xlabel = 'Time', ylabel = 'Space (m)', line_color = 'red' )

运行上述代码在Jupyter中得到的是X轴为时间、Y轴为位置的图像,我需要调整为X轴为位置、Y轴为时间的图像。我选择SymPy是因为作为初学者,用它计算导数和绘图更简便,我知道Matplotlib可以实现坐标轴切换,但我找不到Matplotlib中便于理解的导数计算方案。

实现方案

以下是三种实测可用的实现方案,供有相同需求的用户参考:

1. 仅使用Matplotlib实现

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0,100,200)
x = 6*t**3+5*t**2-3*t+16

plt.plot(x / 1e6,t, 'b-')
plt.title('1-D motion through time')
plt.xlabel('Space (m) (millions)')
plt.ylabel('Time')
plt.show()

2. SymPy结合Matplotlib实现

import sympy as sym
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['figure.figsize'] = [10, 5]

t = sym.Symbol('t')

f = 6*t**3+5*t**2-3*t+16

t2 = np.arange(0, 100, 0.1)
f2 = [f.subs(t, x) for x in t2]

plt.plot(f2, t2, 'r')
plt.title('1-D motion through time')
plt.xlabel('Space (m)')
plt.ylabel('Time')
plt.show()
#a = sym.plot(f, (t,0,100), title = '1-D motion through time', xlabel = 'Time', ylabel = 'Space (m)', line_color = 'red' )

3. 仅使用SymPy实现

import sympy as sym

t, y = sym.symbols('t y')
f = y- 6*t**3 + 5*t**2 - 3*t + 16

sym.plot_implicit(sym.Eq(f ,100),(y ,0,6e6),(t,0,100), title = '1-D motion through time', xlabel = 'Space (m)', ylabel = 'Time', line_color = 'red')

内容的提问来源于stack exchange,提问作者Mason C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:18:03