Есть хорошая функция, которая рисует back to back histograms в Matlab. Мне нужно создать аналогичный граф в matplotlib. Может ли кто-нибудь показать пример рабочего кода?гистограммы с обратной связью в matplotlib
3
A
ответ
4
Благодаря ссылке указал Марк Rushakoff, следуя то, что я, наконец, сделал
import numpy as np
from matplotlib import pylab as pl
dataOne = get_data_one()
dataTwo = get_data_two()
hN = pl.hist(dataTwo, orientation='horizontal', normed=0, rwidth=0.8, label='ONE')
hS = pl.hist(dataOne, bins=hN[1], orientation='horizontal', normed=0,
rwidth=0.8, label='TWO')
for p in hS[2]:
p.set_width(- p.get_width())
xmin = min([ min(w.get_width() for w in hS[2]),
min([w.get_width() for w in hN[2]]) ])
xmin = np.floor(xmin)
xmax = max([ max(w.get_width() for w in hS[2]),
max([w.get_width() for w in hN[2]]) ])
xmax = np.ceil(xmax)
range = xmax - xmin
delta = 0.0 * range
pl.xlim([xmin - delta, xmax + delta])
xt = pl.xticks()
n = xt[0]
s = ['%.1f'%abs(i) for i in n]
pl.xticks(n, s)
pl.legend(loc='best')
pl.axvline(0.0)
pl.show()
2
В этом matplotlib users mailing post есть пример кода для бихистограммы , который идет вверх и вниз вместо левого и правого. Here's the example output с которым он связан.
Если up-down абсолютно не работает для вас, это займет всего несколько минут, чтобы поменять операции по оси Y с помощью операций оси x.
Кроме того, ваша ссылка не является функцией MATLAB, это реальный скрипт, который кто-то написал примерно в 40 строках. Вы действительно можете посмотреть на источник сценария и попробовать портировать его, поскольку MATLAB и matplotlib имеют довольно близкий синтаксис.
что вы пробовали? – SilentGhost