2010-08-10 5 views
0

나는 바의 수가 높거나 낮거나 상관없이 바의 너비를 똑같이 유지하려고합니다. Matplotlib 스택 막대 차트를 사용하고 있습니다. 막대의 너비는 막대의 수에 비례합니다. 내 샘플 코드는 다음과 같습니다. 내가 상관없이 폭 동일한 I 10우리가 그림에서 비교하는 막대의 수에 관계없이 막대 너비를 동일하게 유지하는 방법은 무엇입니까?

import numpy as np 
import matplotlib.pyplot as plt 




N =1 
ind = np.arange(N) # the x locations for the groups 
width = 0.35  # the width of the bars: can also be len(x) sequence 




design = [] 
arch = [] 
code = [] 

fig = plt.figure() 



b = [70] 
a= np.array([73]) 
c = [66] 




p1 = plt.bar(ind, a,width, color='#263F6A') 
p2 = plt.bar(ind, b, width, color='#3F9AC9', bottom=a) 
p3 = plt.bar(ind, c, width, color='#76787A', bottom=a+b) 


plt.ylabel('Scores') 
plt.title('CQI Index') 


plt.xticks(ind+width/2., ('P1'))#dynamic - fed 

plt.yticks(np.arange(0,300,15)) 


plt.legend((p1[0], p2[0], p3[0]), ('A','B','C')) 
plt.grid(True) 

plt.show() 

1에서 비교할 바의 수를 만들 수있는 방법

, 당신은

답변

2

는 바의 폭은 변경되지 않습니다의 규모를 감사 이미지가 바뀝니다. 당신이 규모가 유지하기 위해 동일한를 원하는 경우 수동으로 줄거리는 10 × 10, 100 × 100, 또는 1,000,000,000 × 10

인지, 당신이 보여주고 싶은 범위를 지정할 필요가

편집 :

만약 내가 제대로 이해하고, - 2 개의 바

그래프 1 : 당신이 원하는 것은이 같은 것입니다

10 
+---------------------------+ 
|       | 
|       | 
|       | 
|       | 
|       | 
|  4_     | 
|  | |     | 
| 2_ | |     | 
| | | | |     | 
| | | | |     | 
+---------------------------+ 10 

그래프 2-2 더 바 추가

,536,913 이것은 당신이 당신이 당신의 음모의 규모를 설정해야합니다 무엇을 원하는 경우 바의 명백한 폭이 그래프 1에서 그래프 2로 변경되지 않았습니다 63,210
10 
+---------------------------+ 
|       | 
|       | 
|     7_  | 
|     | |  | 
|     | |  | 
|  4_  | |  | 
|  | | 3_ | |  | 
| 2_ | | | | | |  | 
| | | | | | | | |  | 
| | | | | | | | |  | 
+---------------------------+ 10 

당신이 할 수있는

그 너비는

import matplotlib 
matplotlib.use('GTKAgg') 

import matplotlib.pyplot as plt 
import gobject 

fig = plt.figure() 
ax = fig.add_subplot(111) 

def draw1(): 
    plt.bar(0,2) 
    plt.bar(2,4) 
    ax.set_xlim((0,10)) 
    ax.set_ylim((0,10)) 
    fig.canvas.draw() 
    return False 

def draw2(): 
    plt.bar(4,3) 
    plt.bar(6,7) 

    ax.set_xlim((0,10)) 
    ax.set_ylim((0,10)) 
    fig.canvas.draw() 
    return False 

draw1() 
gobject.timeout_add(1000, draw2) 
plt.show() 
+0

으로 동의합니다. 너비는 항상 처음에 지정되어 있습니다. 사실 내가 말한 의미는 바가 플롯 영역에 맞게 압축되지 않도록 저울을 자동으로 바꾸기를 원합니다. 플로팅 영역이 동적이어야 함을 의미합니다. 따라서 막대의 개수에 따라 그림 영역을 나누는 대신 10 개의 막대까지 하나씩 추가 할 수 있습니다. – Atlas

+0

내가 편집을 추가했습니다 ... 당신이 찾고있는 것이 무엇입니까? –

+0

내가 분명히 표현하지 않으면 죄송합니다. 그래프를 추가하는 것은 내가 찾는 기능이 아닙니다. 오히려 비유였습니다. 바를 추가하고 싶지 않습니다. 나는 그 폭이 똑같이 보일 것임을 그림에있는 막대의 수와 상관없이 설명하고 싶었습니다. 그들은 수치를 나눠서는 안되며, 막대가 많을수록 그래프가 작아집니다. 그들은 그림이 동일하게 보일 수 있도록 그림을 약간 확장해야합니다. 그렇지 않으면, 우리가 위의 예제와 같이 전체 막대를 가져 가면 안된다. 고맙습니다. – Atlas