Ширина полос не меняется, изменяется масштаб вашего изображения. Если вы хотите, чтобы шкала оставалась неизменной, вам нужно вручную указать, какой диапазон вы хотите показать, будет ли ваш график 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()