gpt4 book ai didi

python - 如何重新排列子图,使一个在另一个下面?

转载 作者:行者123 更新时间:2023-12-04 01:49:20 25 4
gpt4 key购买 nike

我正在尝试对两个地 block 进行编码,使一个地 block 位于另一个地 block 下方。但是,我的代码始终将我的两个绘图并排对齐。这是我的代码:

import numpy as np
from scipy.integrate import odeint
from numpy import sin, cos, pi, array
import matplotlib
from matplotlib import rcParams
import matplotlib.pyplot as plt
from pylab import figure, axes, title, show
import xlsxwriter

plt.style.use('ggplot')

def deriv(z, t):
l = 0.25 #unextended length of the spring, in m
m = 0.25 #mass of the bob, in kg
k = 29.43 #spring constant, in Nm^-1
g = 9.81 #gravitational acceleration, in ms^-2

x, y, dxdt, dydt = z

dx2dt2 = (l+x)*(dydt)**2 - k/m*x + g*cos(y)
dy2dt2 = (-g*sin(y) - 2*(dxdt)*(dydt))/(l+x)
#equations of motion

return np.array([dxdt, dydt, dx2dt2, dy2dt2])


init = array([0, pi/2, 0, 0])
#initial conditions (x, y, xdot, ydot)

time = np.linspace(0, 10, 1000)
#time intervals (start, end, number of intervals)

sol = odeint(deriv, init, time)
#solving the equations of motion

x = sol[:,0]
y = sol[:,1]

fig, (ax1, ax2) = plt.subplots(1, 2, sharex=True)

ax1.plot(time,x)
ax1.set_ylabel('hi')

ax2.plot(time,y)
ax2.set_ylabel('fds')

plt.plot()

但我一直收到这样的结果: enter image description here

我试过:

plt.subplot(x)
plt.subplot(y)
plt.show()

但是我遇到了这个错误:

Traceback (most recent call last):
File "/Users/cnoxon/Desktop/Python/Final code 2 copy 2.py", line 39, in <module>
plt.subplot(x)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/matplotlib/pyplot.py", line 1084, in subplot
a = fig.add_subplot(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/matplotlib/figure.py", line 1367, in add_subplot
a = subplot_class_factory(projection_class)(self, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/matplotlib/axes/_subplots.py", line 39, in __init__
s = str(int(args[0]))
TypeError: only size-1 arrays can be converted to Python scalars
>>>

我应该如何解决这些问题?替代解决方案同样受到赞赏 - 我对如何创建地 block 没有偏好;我只想一个在另一个下面。谢谢!

最佳答案

数字在 subplots 中的工作方式是首先提供行数,然后提供列数。要让图彼此下方,您需要 2 行和 1 列。因此,您首先必须在 plt.subplots(2, 1)

中写入 2,然后写入 1
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

来自官方文档

matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

您现在的方式是 1 行和 2 列,这就是您看到它们彼此相邻的原因。

第二种方式是使用subplot,其中211 表示具有 2 行、1 列和第一个子图的图形,212 表示 2 行,1 列和第二个子图。因此,前两位数字指定行数和列数,第三位数字指定子图编号。

plt.subplot(211)
plt.plot(time,x)
plt.ylabel('hi')

plt.subplot(212)
plt.plot(time,y)
plt.ylabel('fds')

enter image description here

关于python - 如何重新排列子图,使一个在另一个下面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com