Было бы проще и безопаснее использовать эту альтернативу, если у вас есть несколько графиков:
import matplotlib as m
import matplotlib.pyplot as plt
import numpy as np
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
x = np.arange(0, 10, .1)
y = np.arange(0, 10, .1)
X, Y = np.meshgrid(x,y)
data = 2*( np.sin(X) + np.sin(3*Y) )
data1 = np.clip(data,0,6)
data2 = np.clip(data,-6,0)
vmin = np.min(np.array([data,data1,data2]))
vmax = np.max(np.array([data,data1,data2]))
fig = plt.figure()
ax = fig.add_subplot(131)
mesh = ax.pcolormesh(data, cmap = cm)
mesh.set_clim(vmin,vmax)
ax1 = fig.add_subplot(132)
mesh1 = ax1.pcolormesh(data1, cmap = cm)
mesh1.set_clim(vmin,vmax)
ax2 = fig.add_subplot(133)
mesh2 = ax2.pcolormesh(data2, cmap = cm)
mesh2.set_clim(vmin,vmax)
# Visualizing colorbar part -start
fig.colorbar(mesh,ax=ax)
fig.colorbar(mesh1,ax=ax1)
fig.colorbar(mesh2,ax=ax2)
fig.tight_layout()
# Visualizing colorbar part -end
plt.show()
Лучшей альтернативой является использование одной цветной полосы для всего графика. Существуют разные способы сделать это, этот учебник очень полезен для понимания наилучшего варианта. Я предпочитаю это решение, которое вы можете просто скопировать и вставить вместо предыдущей визуализирующей цветной части кода.
fig.subplots_adjust(bottom=0.1, top=0.9, left=0.1, right=0.8,
wspace=0.4, hspace=0.1)
cb_ax = fig.add_axes([0.83, 0.1, 0.02, 0.8])
cbar = fig.colorbar(mesh, cax=cb_ax)
Я бы предложил использовать pcolormesh
вместо pcolor
, потому что он быстрее (более информация здесь ).
JIT-компилятор работает после , программа запустила и компилирует код (обычно байт-код или некоторые инструкции VM) на лету (или своевременный, как это называют) в форму, это обычно быстрее, обычно собственная система команд ЦП хоста. JIT имеет доступ к динамической информации о выполнении, тогда как стандартный компилятор не делает и может сделать лучшую оптимизацию как встраивание функций, которые часто используются.
Это в отличие от традиционного компилятора, который компилирует весь код на машинный язык прежде , программа является первым показом.
Для перефразирования стандартные компиляторы создают целую программу как EXE-файл ПЕРЕД первым разом, когда Вы выполняете его. Для более новых программ стиля блок сгенерирован с псевдокодом (псевдокод). Только ПОСЛЕ ТОГО, КАК Вы выполняете программу на ОС (например, путем двойного щелчка по ее значку) будет (JIT), компилятор вталкивает и генерирует машинный код (м-код), что основанный на Intel процессор или независимо от того, что поймет.
Не-JIT-компилятор берет исходный код и преобразовывает его в машину определенный код байта во время компиляции. JIT-компилятор берет код байта агностика машины, который был сгенерирован во время компиляции и преобразовывает его в машину определенный код байта во время выполнения. JIT-компилятор, который использует Java, - то, что позволяет единственному двоичному файлу работать на множестве платформ без модификации.
JIT обозначает Своевременный, что означает, что код компилируется, когда это необходимо, не перед временем выполнения.
Это выгодно, потому что компилятор может генерировать код, который оптимизирован для Вашей конкретной машины. Статический компилятор, как Ваш средний компилятор C, скомпилирует весь код исполняемого кода на машине разработчика. Следовательно компилятор выполнит оптимизации на основе некоторых предположений. Это может компилировать более медленно и делать больше оптимизаций, потому что это не замедляет осуществление программы для пользователя.
У Вас есть код, который является compliled в некоторый IL (промежуточный язык). Когда Вы запускаете свою программу, компьютер не понимает этот код. Это только понимает собственный код. Таким образом, JIT-компилятор компилирует Ваш IL в собственный код на лету. Это делает это на уровне метода.
В начале компилятор был ответственен за превращение высокоуровневого языка (определенный как более высокий уровень, чем ассемблер) в объектный код (машинные команды), которые будут тогда связаны (компоновщиком) в исполняемый файл.
Однажды в эволюции языков, компиляторы скомпилировали бы высокоуровневый язык в псевдокод, который будет тогда интерпретироваться (интерпретатором) для запущения программы. Это устранило объектный код и исполняемые файлы, и позволило этим языкам быть портативными к нескольким операционным системам и аппаратным платформам. Паскаль (который скомпилировал в Псевдокод) был одним из первых; Java и C# являются более свежими примерами. В конечном счете термин Псевдокод был заменен байт-кодом, так как большинство псевдоопераций один байт длиной.
А Своевременный (JIT) компилятор является функцией интерпретатора во время выполнения, что вместо того, чтобы интерпретировать байт-код каждый раз метод вызывается, скомпилирует байт-код в команды машинного кода рабочей машины, и затем вызовет этот объектный код вместо этого. Идеально эффективность выполнения объектного кода преодолеет неэффективность перекомпиляции программы каждый раз, когда это работает.