如何在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.
相关产品推荐
相关产品推荐

