同じIPythonNotebookセルで複数のグラフを作成する


88

IPythonノートブックを

ipython notebook --pylab inline

これは1つのセルの私のコードです

df['korisnika'].plot()
df['osiguranika'].plot()

これは正常に機能しています。2本の線が描画されますが、同じグラフ上に表示されます。

それぞれの線を別々のチャートに描きたいと思います。そして、チャートが次々ではなく、隣り合っていれば素晴らしいでしょう。

次のセルに2行目を配置すると、2つのグラフが表示されることを知っています。ただし、グラフは同じ論理単位を表しているため、グラフを互いに近づけてください。

回答:


89

最初に複数の軸を作成し、次のようにパンダのプロット関数に渡します。

fig, axs = plt.subplots(1,2)

df['korisnika'].plot(ax=axs[0])
df['osiguranika'].plot(ax=axs[1])

それでも1つの図が得られますが、2つの異なるプロットが隣り合っています。


3
これは機能しています。今は画像のサイズを変更しません。私はfig、axs = plt.subplots(1,2、figsize =(15、5))でそれを行うことができます。画像のサイズをピクセル単位で設定する方法はありますか?
WebOrCode 2013年

1
figsizeを使用するのは確かに方法であり、それはインチ単位のサイズです。ピクセル数は、画面に表示するために固定されているdpiによって異なります。ただし、保存する場合は、dpiキーワードを追加して設定できます。
Rutger Kassies 2013年

3
dpiがオンスクリーンディスプレイ用に固定されているかどうかは正確ではありません(そうですがそうではありません)。IPythonは、純粋にピクセルサイズに基づいて画像を表示します。そのピクセルサイズは、インチ単位の図形サイズに構成を掛けることにより、matplotlibで決定されsavefig.dpiます。インラインフィギュアは、ファイルの書き込みと同じsavefigパスを使用します。
minrk 2013年

それを指摘してくれてありがとう、私はそれがそのように働くことを知りませんでした。ディスプレイのdpiを考慮に入れると(同様に)、フィギュアの作成時に設定するのが簡単なので、もっと便利ではないでしょうか。savefig.dpiの場合、mpl.rcParams['savefig.dpi'] = 120。以外の方法はわかりません。表示dpiの場合、などの多くの場所にキーワードがありますが、plt.figure(dpi=120)現在は無視されているため、修正されているという私の誤った仮定があります。
Rutger Kassies 2013年

102

各プロットの後にshow()関数を呼び出すこともできます。例えば

   plt.plot(a)
   plt.show()
   plt.plot(b)
   plt.show()

1
すばらしいですが、(2,2)や(1,2)のように、プロット画像の場所を設定するにはどうすればよいですか?
Pythoner 2016

3
このオプションを使用すると、プロットは必然的に次々に表示されます。全体的なレイアウトをより細かく制御するにpyplot.subplots()は、次の方法があります。
Eric O Lebigot 2017年

1
リンクを削除しました。
Tooblippe

12

このようなもの:

import matplotlib.pyplot as plt
... code for plot 1 ...
plt.show()
... code for plot 2...
plt.show()

これはseaborn、プロットにパッケージを使用している場合にも機能することに注意してください。

import matplotlib.pyplot as plt
import seaborn as sns
sns.barplot(... code for plot 1 ...) # plot 1
plt.show()
sns.barplot(... code for plot 2 ...) # plot 2
plt.show()

11

別の方法、多様性のために。これは他のものよりやや柔軟性がありませんが。残念ながら、グラフは、元の質問で要求したように並べて表示されるのではなく、上下に表示されます。しかし、それは非常に簡潔です。

df.plot(subplots=True)

データフレームは、2つのシリーズ以上のものを持っており、あなただけのこれら二つをプロットしたい場合は、交換する必要がありますdfdf[['korisnika','osiguranika']]


2

これが新しい機能かどうかはわかりませんが、これは別の図にプロットされます。

df.plot(y='korisnika')
df.plot(y='osiguranika')

これは同じ図にプロットされますが:(操作のコードと同じように)

df.plot(y=['korisnika','osiguranika'])

前者の方法を使っていて、同じ図にプロットしてほしかったので、この質問を見つけました。あなたの質問が実際に私の答えでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.