Matplotlib Barh производит шаткое расстояние между барами - PullRequest
7 голосов
/ 03 января 2012

Я генерировал гистограммы, которые выглядят так:

enter image description here

Обратите внимание, что вертикальный интервал на этикетках по какой-то причине неравномерен;Я не уверен, имеет ли это отношение к тому, как я назначил галочки, или к какому-либо механизму, на самом деле помещающему текст.Соответствующий код:

height_factor = 40.0
ind = np.linspace(0,len(sorted_totals)*height_factor,num=len(sorted_totals))
width = 0.25
fig = plt.figure(figsize=(15.5, 8.75),dpi=300)
p1 = plt.barh(ind,map(int,sorted_composite[:,0]),color='blue',align='center',height=height_factor)
p1 = plt.barh(ind,map(int,sorted_composite[:,2]),color=(0.75,0.1,0.1),align='center',height=height_factor)
plt.ylabel('# of Picks (blue) + # of Bans (red)')
plt.yticks(ind, sorted_totals[:,0])
plt.subplots_adjust(bottom=0.05, left=0.14,right=0.95,top=0.95)
plt.ylim([ind.min() - height_factor, ind.max() + height_factor])

Мои данные хранятся в sorted_composite, а ind - это значения, которые я использую для размещения баров (местоположения ytick).Я использую linspace для создания равномерно распределенных баров, и это единственный вид работ, и я точно не знаю, почему.

1 Ответ

2 голосов
/ 14 января 2012

, как предполагает user1127062, возможно, ваш код в порядке.

Если вам не нужен интерактивный график, сохраните его как svg

Если вы запустите:

data = numpy.random.randn(10000)
pylab.hist(data,300)
pylab.savefig(fileName+'.svg',format='svg')

вы увидите псевдонимы пикселей (в полосах ширины) в окне рисунка, но он исчез в файле svg.

Кажется, что бэкэнд "cairo" выполняетЛучшая работа по сохранению файлов PNG, если SVG не совместимы с тем, что вы делаете.Они выглядят так же хорошо, как скриншот svg.

Вы можете переключить бэкэнд, запустив.

import matplotlib
# you have to change the backend before importing pylab
matplotlib.use('cairo') 
import pylab

raw "cairo" не поддерживает show(), поэтому вы не можете использовать его в интерактивном режиме или для отображениясюжет прямо из программы.

Бэкенд "GTKCairo" имеет лучшее из обоих миров, но не включен в установку по умолчанию (по крайней мере, не в том, что я получил с sudo apt-get install matplotlib)

Если выиспользуя Ubuntu, я думаю, все, что вам нужно сделать, чтобы заставить его работать, это установить gtk и перекомпилировать matplotlib:

sudo apt-get install git-core python-gtk2-dev
git clone git://github.com/matplotlib/matplotlib.git
cd matplotlib
sudo python setup.py install

Вы можете проверить, какой бэкэнд активен с:

matplotlib.get_backend()

Youможно автоматически загрузить ваш любимый бэкэнд, отыскивая ваш matplotlibrc файл, который я нашел в:

/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/matplotlibrc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...