동일한 IPython Notebook 셀에서 둘 이상의 차트 만들기


87

내 IPython 노트북을 시작했습니다.

ipython notebook --pylab inline

이것은 하나의 셀에있는 내 코드입니다.

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

이것은 잘 작동하며 두 개의 선이 그려 지지만 동일한 차트에 있습니다.

각 선을 별도의 차트에 그리고 싶습니다. 그리고 차트가 하나씩이 아니라 나란히 있으면 좋을 것입니다.

두 번째 줄을 다음 셀에 배치하면 두 개의 차트를 얻을 수 있다는 것을 알고 있습니다. 그러나 차트는 동일한 논리 단위를 나타내므로 서로 가깝게 유지하고 싶습니다.

답변:


88

먼저 여러 축을 만들고 다음과 같이 Pandas 플롯 함수에 전달합니다.

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

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

여전히 하나의 그림을 제공하지만 서로 옆에 두 개의 다른 그림이 있습니다.


3
이것은 효과가 있습니다. 이제 이미지 크기를 변경하지 않겠습니다. 나는 fig, axs = plt.subplots (1,2, figsize = (15, 5))로 할 수 있습니다. 이미지 크기를 픽셀 단위로 설정하는 방법이 있습니까?
WebOrCode 2013 년

1
figsize를 사용하는 것이 실제로 방법입니다. 픽셀 수는 화면에 표시하기 위해 고정 된 dpi에 따라 다릅니다. 그러나 저장을 위해 dpi 키워드를 추가하여 설정할 수 있습니다.
Rutger Kassies 2013 년

2
(물론 그것이 dpi가이 화면에 표시 고정되어 매우 정확하지 않습니다 그렇지 않은). IPython은 순전히 픽셀 크기를 기반으로 이미지를 표시하며 해당 픽셀 크기는 savefig.dpi구성 에 인치 단위의 그림 크기를 곱하여 matplotlib에서 결정됩니다 . 인라인 그림은 파일 작성과 동일한 savefig 경로를 사용합니다.
minrk

지적 해주셔서 감사합니다. 그렇게 작동하는지 몰랐습니다. 그림 생성시 설정하기 쉽기 때문에 디스플레이 dpi를 고려하면 더 편리하지 않을 것입니다. savefig.dpi의 경우 나는 mpl.rcParams['savefig.dpi'] = 120. 디스플레이 dpi의 경우와 같은 많은 장소에 키워드가 plt.figure(dpi=120)있지만 지금은 무시되므로 수정에 대한 잘못된 가정입니다.
Rutger Kassies 2013 년

101

각 플롯 후에 show () 함수를 호출 할 수도 있습니다. 예 :

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

1
훌륭하지만 (2,2) 또는 (1,2)와 같은 플롯 그림 위치를 설정하는 방법은 무엇입니까?
Pythoner 2016-04-08

3
이 옵션을 사용하면 플롯이 반드시 차례로 나타납니다. 전체 레이아웃에 대한 더 많은 제어를 pyplot.subplots()위해 갈 길입니다.
Eric O Lebigot

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)

dataframe보다 두 시리즈보다가, 당신은 만 두 플롯하려는 경우, 당신은 교체해야합니다 df함께 df[['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.