2013-10-22 2 views
1

저는 matplotlib를 사용하여 파이 차트를 그립니다. 이 파이 차트 옆에는 슬라이더가 있는데이 슬라이더를 누르면 핸들러가 호출됩니다. 이 핸들러가 piechart의 값을 변경하고 싶습니다. 예를 들어 원형 차트에 각각 60 %와 40 %의 레이블이 있으면 슬라이더를 누른 상태에서 레이블을 90 %와 10 %로 수정하고 싶습니다. 이 원형 차트와 슬라이더를 끌어matplotlib를 사용하여 내 piechart를 새로 고침 하시겠습니까?

: 여기에 코드입니다

plt.axis('equal'); 
explode = (0, 0, 0.1); 
plt.pie(sizes, explode=explode, labels=underlyingPie, colors=colorOption, 
     autopct='%1.1f%%', shadow=True, startangle=90) 
plt.axis('equal') 

a0 = 5; 
axcolor = 'lightgoldenrodyellow' 
aRisk = axes([0.15, 0, 0.65, 0.03], axisbg=axcolor) 
risk = Slider(aRisk, 'Risk', 0.1, 100.0, valinit=a0) 
risk.on_changed(update); 

는 다음과 같은 이벤트 핸들러, 원하는 기능은 파이 차트

def update(val): 
    riskPercent = risk.val; 
    underlyingPie[0] = 10; 
    underlyingPie[1] = 90; 
    plt.pie(sizes, explode=explode, labels=lab, colors=colorOption, 
     autopct='%1.1f%%', shadow=True, startangle=90) 
에게 라벨을 수정하고 다시 그리기하는 것입니다

나는 또한 아래와 같은 드로잉을하고 있는데 파이 차트와 아래의 캔버스를 모두 얻을 수 있습니까? 사전

이 거의 당신이 찾고있는 무엇을해야
+0

그래서 무엇이 문제입니까? – tacaswell

+0

슬라이더가 호출 될 때 원형 차트를 새 값으로 다시 그리기 – godzilla

+0

코드를 수집했지만 코드가 더 정확하거나 올바르게 작동하지 않습니다. – tacaswell

답변

3

에서

fig = plt.figure(); 
ax1 = fig.add_subplot(211); 

for x,y in zip(theListDates,theListReturns): 
    ax1.plot(x,y); 

plt.legend("title"); 
plt.ylabel("Y axis"); 
plt.xlabel("X axis"); 
plt.title("my graph"); 

감사합니다. 원형 차트를 유지하기 위해 원형 차트에 대한 축 핸들이 있어야합니다.

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.widgets import Slider, Button, RadioButtons 

x = [50, 50] 

fig, axarr = plt.subplots(3) 

# draw the initial pie chart 
axarr[0].pie(x,autopct='%1.1f%%') 
axarr[0].set_position([0.25,0.4,.5,.5]) 

# create the slider 
axarr[1].set_position([0.1, 0.35, 0.8, 0.03]) 
risk = Slider(axarr[1], 'Risk', 0.1, 100.0, valinit=x[0]) 

# create some other random plot below the slider 
axarr[2].plot(np.random.rand(10)) 
axarr[2].set_position([0.1,0.1,.8,.2]) 

def update(val): 
    axarr[0].clear() 
    axarr[0].pie([val, 100-val],autopct='%1.1f%%') 
    fig.canvas.draw_idle() 

risk.on_changed(update) 

plt.show() 
+0

hello aganders3, 답장을 보내 주셔서 감사합니다. 솔루션이 완벽하게 작동합니다. 유일한 캔버스에 다른 그래프를 그리는 중입니다. 저는 piechart를 원합니다. 우리가 할 수있는 기회는 무엇입니까? 설명 할 코드를 수정했습니다 – godzilla

+1

필요가 크게 바뀌면 다른 질문을 열어야합니다. 그러나 같은 그림에서 다른 그림을 그리는 데 아무런 문제가 없어야합니다. 얼마나 많이 그릴 지에 따라'plt.subplots' 매개 변수를 변경하십시오. – aganders3

+0

수정 된 질문을 해결하려면 수정 사항을 확인하십시오. 덕분에 – aganders3

관련 문제