如何使用Python并排绘制两个图

Hei*_*g93 64 python matplotlib

我在matplotlib上找到了以下示例

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')


plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()
Run Code Online (Sandbox Code Playgroud)

我的问题是:我需要改变什么,让这些情节并排?

Jon*_*ice 105

将您的子图设置更改为:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)
Run Code Online (Sandbox Code Playgroud)

参数subplot包括:行数,列数以及当前所在的子图.所以1, 2, 1意味着"一排,两列图:转到第一个子图." 然后1, 2, 2意味着"1行,2列图:转到第二个子图."

您目前要求的是一个2行,1列(即一个在另一个上面)的布局.你需要要求一个1行,2列的布局.当你这样做时,结果将是:

并排的情节

为了最大限度地减少子图的重叠,您可能想要:

plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)

演出前.产量:

整齐并排的情节


Smi*_*tty 17

当沿一个方向堆叠子图时,如果您只是创建几个轴,matplotlib 文档建议立即解压。

fig, (ax1, ax2) = plt.subplots(1,2, figsize=(20,8))
sns.histplot(df['Price'], ax=ax1)
sns.histplot(np.log(df['Price']),ax=ax2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


bus*_*ear 11

检出此页面:http : //matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplots类似。我认为这会更好,因为设置图形的参数会更容易。前两个参数定义布局(在您的情况下为1行,2列),其他参数更改功能,例如图形尺寸:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 3))
axes[0].plot(x1, y1)
axes[1].plot(x2, y2)
fig.tight_layout()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 我建议使用`plt.subplots`。您可以指定参数“ figsize”来定义图形的大小。就像在`plt.subplots(1,2,figsize = {20,4))`中一样。否则,您可以先定义图形和图形尺寸:`plt.figure(figsize =(20,4))`。 (4认同)
  • 还有没有办法让剧情更宽更高? (2认同)