Python kullanarak iki grafik yan yana nasıl yapılır?


94

Aşağıdaki örneği matplotlib'de buldum:

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()

Sorum şu: Grafikleri yan yana getirmek için neyi değiştirmem gerekiyor?

Yanıtlar:


148

Alt alan ayarlarınızı şu şekilde değiştirin:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

Parametreler subplotşunlardır: satır sayısı, sütun sayısı ve şu anda hangi alt grafikte olduğunuz. Yani 1, 2, 1"1 satırlı, 2 sütunlu bir şekil: ilk alt grafiğe gidin." O zaman 1, 2, 2"1 satırlı, 2 sütunlu bir şekil: ikinci alt grafiğe git" anlamına gelir.

Şu anda 2 satırlı, 1 sütunlu (yani biri diğerinin üstünde) bir düzen istiyorsunuz. Bunun yerine 1 satırlık, 2 sütunlu bir düzen istemeniz gerekir. Bunu yaptığınızda sonuç şöyle olacaktır:

yan yana arsa

Alt alanların üst üste gelmesini en aza indirmek için, aşağıdakilerden birini atmak isteyebilirsiniz:

plt.tight_layout()

gösteriden önce. Verici:

daha düzgün yan yana arsa


45

Bu sayfayı kontrol edin: http://matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplotsbenzer. Figürün parametrelerini ayarlamak daha kolay olduğu için daha iyi olduğunu düşünüyorum. İlk iki bağımsız değişken düzeni tanımlar (sizin durumunuzda 1 satır, 2 sütun) ve diğer parametreler şekil boyutu gibi özellikleri değiştirir:

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()

görüntü açıklamasını buraya girin


1
Konuyu daha geniş ve daha yüksek hale getirmenin bir yolu var mı?
Heißenberg93

Övgüyü kastetmiyorum plt.xlim / ylim
Heißenberg93

5
Kullanmanızı öneririm plt.subplots. figsizeŞeklin boyutunu tanımlamak için bağımsız değişkeni belirtebilirsiniz . Olduğu gibi plt.subplots(1, 2, figsize=(20, 4)). Aksi takdirde, önce şekil ve şekil boyutunu tanımlayabilirsiniz: plt.figure(figsize=(20, 4)).
busybear

Bazı nedenlerden dolayı, alt grafiği "plt.savefig ('.... png')" kaydetmeye çalıştığımda boş bir veri alıyorum. Başlangıçta tam olarak aynı kodu kullanıyorum (sadece plt.figure ekledim (figsize = (7, 3))).
Heißenberg93

Aradığınız plt.savefigsonra plt.show? Eğer öyleyse, bu muhtemelen senin sorunun.
busybear
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.