Как сохранить ширину столбцов независимо от того, сколько столбцов мы сравниваем на рисунке? - PullRequest
0 голосов
/ 10 августа 2010

Я хочу, чтобы ширина баров оставалась неизменной независимо от того, какое количество баров высокое или низкое. Я использую гистограмму с накоплением Matplotlib. ширина столбцов зависит от количества столбцов. Вот мой пример кода.

Как сделать ширину одинаковой независимо от количества баров, которые я сравниваю от 1 до 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 августа 2010

Ширина полос не меняется, изменяется масштаб вашего изображения. Если вы хотите, чтобы шкала оставалась неизменной, вам нужно вручную указать, какой диапазон вы хотите показать, будет ли ваш график 10х10, 100х100 или 1 000 000 000 x 10

Edit:

Если я правильно понимаю, вы хотите что-то вроде этого:

График 1 - 2 бара:

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

График 2 - добавить еще 2 бара

10
+---------------------------+
|                           |
|                           |
|                 7_        |
|                 | |       |
|                 | |       |
|       4_        | |       |
|       | |  3_   | |       |
|  2_   | |  | |  | |       |
|  | |  | |  | |  | |       |
|  | |  | |  | |  | |       |
+---------------------------+ 10

Там, где видимая ширина столбцов не изменилась с Графика 1 до Графика 2. Если это то, что вы хотите сделать, вам нужно будет установить масштаб вашего графика

Вы можете сделать это с

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...