Бокэ или боке: Недопустимое название — Викисловарь

Содержание

40 прекрасных примеров фотографии с боке

Боке — один из самых популярных методов фотографии, возможно, потому что он мощный, но простой в использовании. Все, что вам нужно, — это камера, которая позволяет регулировать диафрагму и фокусное расстояние, в идеале — зеркальную камеру с большой максимальной диафрагмой.

Bokeh — от японского «boke», что означает «размытие» или «дымка» — это размытие фотографии, или, точнее, эстетическое качество размытия. Вы можете создать это размытие, используя небольшую глубину резкости. С помощью этой техники вы можете создать несколько ярких световых эффектов или просто выделить объект, не фокусируя остальную часть изображения.

Чтобы получить боке определенной формы, например, сердца или звезды, вы можете создать фильтр боке илиbuy a bokeh kit, который включает в себя все виды фигур.

Если вы используете смартфон, вы сможете имитировать боке только через специальное приложение или эффект в камере. Хотя эти эффекты боке могут быть приятными, они не так удобны или настраиваемы, как DSLR. По крайней мере, на данный момент создание боке с помощью цифровой зеркальной камеры превосходит любой смартфон.

Ida Hollis — Day 335

Сначала вы можете испытать искушение использовать боке для всего. Но, как и в любой технике, использование боке не гарантирует, что ваши фотографии будут удивительными. Не каждый объект подходит для боке.

Например, если вы фотографируете широкую сцену или пейзаж, небольшая глубина резкости не подойдет. Однако, если вы сосредотачиваетесь на одном объекте, например на чашке или свече, боке может быть хорошим выбором.

Прекрасные примеры фотографии с боке

Ниже приведены несколько жанров. / предметы, которые замечательно работают с боке, плюс 40 прекрасных примеров, которые вдохновляют вас на создание собственной фотографии боке. Внимание на модель. Это может также украсить уродливый фон. Например, вы можете превратить шероховатый городской фон в живописную вечернюю сцену с помощью боке.

Portraits

Bokeh is a great technique for portraits because it minimizes distractions, keeping the viewers’ attention on the model. It can beautify an ugly background, too. For instance, you can turn a grungy urban background into a picturesque evening scene through bokeh.

Боке также может быть эффективным способом повышения интереса к портретам, в которых отсутствует зрительный контакт, например. если модель отвернулась от камеры. Без этого зрительного контакта зрители с большей вероятностью будут уделять внимание остальной части фотографии. Если фон не особенно интересен, вы можете сделать его более интересным и красивым с помощью боке.

Однако некоторые портреты лучше без боке. Например, вы можете захотеть использовать окружающую среду, чтобы рассказать историю о человеке, или наоборот — использовать портрет, чтобы рассказать историю об окружающей среде. В обоих случаях боке может помешать этой связи и повествованию.

Серхио Кабесас — Такой красочный

unaisa momoitio — 231 # 2013/365 ……… .. 🙂 .

Кьяра Кремаски — Алессандра

Амине Фасси — Сияние соседей — 3

Серхио Кабесас — ты не можешь меня спрятать

Кошки и собаки

Красота боке дополняет красоту кошек и собак. Их мягкий мех и изящная форма соответствуют мягкости боке, а их настороженные глаза — округлости огней боке.

Но даже помимо эстетики, боке может пригодиться для портретов кошек и собак, снятых на улице. Поскольку многие кошки и собаки имеют шерсть нейтрального цвета, которая гармонирует с природой, они могут выглядеть замаскированными на портрете под открытым небом. Размывая фон и фокусируя внимание на кошке / собаке, вы выделяете их, несмотря на их камуфляж.

Алекс Гриншпун — «Поднимитесь на дерево», сказали они

— Graciebokeh2KE

Торстен Беренс — Кот Боке — Шлезвиг-Гольштейн — Германия

Джулиан Ох — Рокки

Джеймс Друри — летающий Джесси

Насекомые | || 73

To get an excellent close-up shot of an insect, you may need to experiment with макросъемкой — техника, которая идет рука об руку с фотографией боке. Но даже если вы не снимаете макросъемку, вы можете использовать боке, чтобы сделать крошечного насекомого более заметным среди окружающей листвы.

Боке также может добавить текстурный контраст к изображению насекомого. Если насекомое, которое вы фотографируете, имеет твердую внешнюю оболочку (например, божьи коровки и жуки), эта жесткость может контрастировать с мягкостью боке. В то же время округлость корпуса совпадает с округлостью огней боке, поэтому оба они дополняют друг друга и контрастируют друг с другом.

Алекс Гриншпун — Божья коровка

Энн Уорнер — Литтл Убийца

Габриэль Капаро — Последний посетитель

Джоэл Оливес — Возвращение к старому фавориту

Амин Фасси — Сирфа — Потерянная

Цветы | || 88

Flowers are one of the most popular subjects for bokeh photography. Besides being lovely, flowers have a soft aesthetic that matches the aesthetic of bokeh.

Кроме того, фон цветочных картин, как правило, идеально подходит для боке. Часто на заднем плане присутствуют другие цветы или зелень, которые прекрасно сочетаются друг с другом.

Однако будьте осторожны, чтобы не переусердствовать с боке. Если круги боке слишком велики, они могут отвлекать от цветка, особенно если цветок маленький. Гладкое, смешанное боке, как правило, лучший выбор.

Брайон Липпинкотт — Лепесток Прекрасный

Wicaksono Trian Islami — Цветы II

Roelof de Hoog — Поле цветов | || 97

jordan parks — sunday morning

Алекс Гриншпун — Один из видов

Листья

Как и цветы, листья, как правило, имеют отличный фон для боке. Но в отличие от цветка, вы можете легко перемещать опавшие листья или ветви, чтобы получить идеальное освещение и композицию. Вы также можете работать с более крупными кругами боке, в зависимости от листа и настройки.

Например, если лист большой и тусклый, яркие огни боке могут добавить интерес к фотографии. Точно так же, если между листом и фоном есть сильный цветовой контраст, вы можете добавить круги боке, не отвлекая от листа.

Славина Бахчеванова — Падший

Digic-Vision — Один лист

Элизме — Воздержание природы

Элизме — ~ мягкие дожди ~

Алекс Гриншпун — Путешествие в Лилипут продолжается

Трава и грибы | || 115

Grass can be a brilliant bokeh subject, especially when it’s glistening with dew in the morning. This dew creates lovely bokeh circles, which contrast the sharp blades of grass. You can also add other subjects to a grassy setting, such as pine cones or small toys.

Если вам повезет, вы можете даже найти некоторые грибы в траве. Грибы имеют симпатичный, своеобразный внешний вид, который идеально подходит для фотографий крупным планом. С боке вы можете вырастить даже самые маленькие грибы, чтобы зрители могли оценить их причудливую красоту.

Мариана — целовать солнце

Энн Уорнер — Glow — Joy and Hope

Петр Щепанкевич — Сосновая шишка 1

Джетт Бальцер — Парк Юрского периода

Андреас Кречмер — Хербстлебен

Бастиан_Шмидт — Маленькие вещи

Still Life

Многие из лучших объектов боке обычно бывают на улице, где фоны более яркие и интересные. Но вы также можете получить отличные снимки боке в помещении через натюрморт фотографии. Поскольку натюрморты позволяют вам расположить объект и выбрать фон, у вас есть бесчисленное множество возможностей для создания крутых боке-изображений.

При выборе фона для боке-изображения в помещении учитывайте, какие объекты и источники света будут смешиваться. лучше всего вместе Маленькие огни, такие как свечи или рождественские огни, часто работают чудесно, потому что они допускают больше кругов боке. Что-то знакомое и отличительное, такое как рука или лицо, также может быть хорошим выбором.

Иорданские парки — Без названия

Дейв Фаулер — Кофе Боке

Натали — воскресное боке

Кьяра Кремаски — Без названия

Omair Haq — Muslima

Огни

С правильными фоновыми огнями вы можете сделать Боке ваш основной объект, размытие всей фотографии. Этот подход может работать особенно хорошо, когда вы фотографируете огни города Свет от светофоров, уличных фонарей и окон в ночное время настолько знаком, что зрители могут представить сцену, даже если она размыта. Они получают красоту боке, все еще узнавая обстановку и чувствуя ее атмосферу.

Иорданские парки — лето

Тения Прокаламу — Дорогой навсегда, ты не продержался

Ludvigem — Bokeh

Иорданские парки — Без названия

Многие из вышеперечисленных фотографий были отобраны из нашей талантливой группы Flickr. Есть хорошее изображение боке? Добавьте его в группу, чтобы мы могли полюбоваться вашей работой!

Никогда не создавали фото-боке раньше? Если вы хотите попробовать, вот настройки камеры, которые вам понадобятся.

Bokeh Basic Camera Settings

Aperture

Начните с настройки камера для оптимизации боке. Вам нужна большая диафрагма, например, f / 1.4, f / 1.8 или f / 2. Настройки диафрагмы влияют на глубину резкости. В фотографии с боке вам нужна небольшая глубина резкости, что означает низкий уровень диафрагмы. Это позволяет применить технику размытия к фону, когда ваш объект остается в фокусе. Установите для камеры приоритет диафрагмы.

Скорость затвора

В режиме приоритета диафрагмы вы можете позволить камере определять скорость затвора или использовать настраиваемые параметры 1/50 секунды или быстрее. Если вы идете медленнее, чем этот, фон слишком сильно размывается, сводя на нет эффект окруженного света. Это может затемнить изображение, но не поддавайтесь искушению пойти на большее число диафрагмы. Вместо этого попробуйте повысить уровень ISO.

Предметы и освещение

Боке легче достичь, если подойти ближе к объекту. При необходимости используйте свой зум, чтобы помочь. Вы также обнаружите, что, когда фон яркий — то есть уличные фонари ночью или яркое солнце позади вашего объекта — боке будет происходить более естественно.

Эффект боке (bokeh), пятна рассеяния

Боке / bokeh (ударение на ‘е’) — это понятие, которое используется в фотографии и означает размытие (в переводе с японского), а точнее, боке — это субъективная характеристика красоты размытия.

Размытие мы получаем, когда часть объектов находятся вне глубины резкости (DoF).

Глубина резкости проявляется из-за того, что линзы фокусируют лучи света, исходящие из одной точки, в конус, вершина которого упирается в пленку/матрицу фотоаппарата (или видеокамеры). Высота этого конуса зависит от расстояния объекта до камеры и от взаиморасположения линз внутри камеры.

Если поверхность пленки/матрицы НЕ попадает точно на вершину конуса, то пересечение конуса и пленки/матрицы принимает форму круга — пятна рассеяния (circle of confusion).

По существу это означает, что 3D-точка превращается в круг, когда проецируется на пленку/матрицу и, таким образом, картинка размывается.

Поскольку при создании реалистичных 3D-изображений мы имитируем фотографию (а не то, как видит наш глаз), то соответственно мы должны в полной мере воспроизводить и эффект боке.

Примеры фотографий с красивым эффектом боке (с пятнами рассеяния):

Пятна рассеяния не обязательно должны быть круглыми и равномерно освещенными. Это зависит от формы отверстия диафрагмы и конфигурации линз.

Пятна рассеяния не обязательно должны быть столь выделяющимися. Вот фотография с НЕ таким заметным эффектом боке:

Но поскольку 3D-редакторы (вернее рендереры) только симулируют реальные эффекты, то боке получается иногда не совсем корректно.

Вот посмотрите, к примеру, на задний план на этом рендере дня. Вы сразу (теперь уже) заметите, что с эффектом боке что-то не то.

Дело в том, что V-Ray как-то странно визуализирует пятна рассеяния.

Эффект боке в V-Ray.

Эффекты боке по-умолчанию включены в V-Ray. Чтобы увидеть пятна рассеяния достаточно активизировать глубину резкости (поставить галочку depth-of-field) в настройках VRay-камеры:

blades — если поставить эту галочку, то пятна рассеяния будут НЕ кружочками, а n-угольниками. Цифра рядом устанавливает количество углов.

rotation (deg) — вращает многоугольники (эта настройка бесполезна, если пятна рассеяния круглые).

center bias — сдвигает максимум яркости пятна рассеяния к краям (если в положительную сторону увеличивать значение, то получатся бублики) или к центру (если в отрицательную). Значение 0 (ноль) означает, что пятно равномерно освещено от края к центру.

anisotropy — растягивает пятна рассеяния, чтобы они приняли элептическую форму.

Я для примера изменял значение subdivs на свитке Sampling. Вот что получилось:


DoF выключен.


DoF включен. Subdivs=6


DoF включен. Subdivs=12


DoF включен. Subdivs=24


DoF включен. Subdivs=48


DoF включен. Subdivs=96

Обратите особое внимание на пятно рассеяния на самой дальней полусфере: при шести сабдивах его вообще не видно.

Также обратите внимание на увеличение времени просчета (с 1 минуты до 24 минут) для получения сносного результата. И это на простейшей сцене.

Эффект боке в mental ray.

Чтобы получить пятна рассеяния в mental ray нужно в меню Rendering > нажть Render Setup > на закладке Renderer > в свитке Camera Effects > в области Camera Shaders > поставить галочку Lens > и выбрать шейдер Depth of Field / Bokeh:

Focus Plane — расстояние до объекта, который должен быть четким (НЕразмытым) на изображении.

Radius of Confusion — величина размытия.

Samples — качество размытия.

Имитация пятен рассеяния в Photoshop…

…и других программах для композа.

Очень часто для получения эффекта глубины резкости создают карту Z-глубины, а потом по ней блурят изображение (с помощью размытия по гауссу — Gaussian Blur) в Photoshop. Но в результате такого размытия мы не увидим никаких пятен рассеяния:


Имитация глубины резкости с помощью размытия по гауссу.

Чтобы эти самые circle of confusion появились нужно делать размытие с помощью Lens Blur:


Имитация пятен рассеяния с помощью Lens Blur.

Есть еще один вариант, как дешево создать красивый эффект боке. Нужно отрендерить изображение в 16-ти или 32-битный формат (EXR, к примеру, чтобы сохранилась ВСЯ информация о яркости), загнать в вашу любимую программу для композитинга (AE, Nuke, Fusion) и уже там размыть так, чтобы появились правильные пятна рассеяния.

Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Rampant Studio Bokeh — лицензия, русская версия, цена

Rampant Studio Bokeh — это 90 роялти-фри клипов эффекта боке разрешения 2K, 4K и 5K. Этот видеоматериал идеально подойдёт для визуальных эффектов, композитинга, анимированной графики, графического дизайна и даже печати. Эти фоны с настоящим боке позволят вам с лёгкостью добавить стиля и изысканности ко всей вашей продукции.

Сколько стоит купить лицензию, варианты поставки

  • Артикул: RDT-BOKEH-2k
  • Тип поставки: Электронная (e-mail)
  • Язык (версия): Английский
  • Срок поставки лицензионной программы или ключа активации: 3-14 рабочих дней
  • Платформа: Mac OS/Windows
  • Тип лицензии: Постоянная
  • Тип покупателя: Коммерческая
  • Оплата картой недоступна
  • Только для юр.
    лиц и ИП
  • Артикул: RDT-BOKEH-4k
  • Тип поставки: Электронная (e-mail)
  • Язык (версия): Английский
  • Срок поставки лицензионной программы или ключа активации: 3-14 рабочих дней
  • Платформа: Mac OS/Windows
  • Тип лицензии: Постоянная
  • Тип покупателя: Коммерческая
  • Оплата картой недоступна
  • Только для юр. лиц и ИП

Построение боке: включение всплывающих подсказок только для некоторых глифов



У меня есть фигура с некоторыми глифами, но я хочу, чтобы всплывающие подсказки отображались только для определенных глифов. Есть ли в настоящее время способ сделать это в Боке?

В качестве альтернативы, есть ли способ plot две фигуры друг на друге? Похоже, это позволит мне сделать то, что я хочу.

python plot hover tooltip bokeh
Поделиться Источник
Imaduck     03 апреля 2015 в 15:35

4 ответа


  • Увеличение горизонтального смещения всплывающих подсказок Bootstrap

    Кто-нибудь знает, есть ли простой способ увеличить смещение всплывающей подсказки для всплывающих подсказок Bootstrap? В документах ничего нет. В некоторых случаях всплывающая подсказка затемняет целевую область и препятствует щелчку. http:/ / twitter.github.io /…

  • Отключить Swing всплывающих подсказок по параметру командной строки

    Есть ли способ отключить отображение всплывающих подсказок в приложении Swing (JRE6+, Motif look and feel) без изменения исходного кода? У меня есть развернутое приложение, которое в одном случае имеет серьезные проблемы с отображением при отображении всплывающих подсказок на JTable. По сути, весь…



19

Благодаря этой странице в Google Groups я понял, как это можно сделать. Ссылка здесь

Edit 2015-10-20: похоже, ссылка на группу google больше не работает, к сожалению. Это было сообщение от Сары Берд @bokehplot.

Edit 2017-01-18: в настоящее время это добавит несколько значков инструментов наведения на панель инструментов. Это может вызвать проблемы. Здесь уже есть вопрос, поданный по адресу github . В качестве альтернативы попробуйте решение @tterry’s в приведенном ниже ответе.

По сути, вам нужно (версия боке 0.9.2):

  1. не добавляйте hover в свой tools , когда вы создаете фигуру
  2. создавайте глифы индивидуально
  3. добавьте глифы к вашей фигуре
  4. настройте инструмент наведения курсора для этого набора глифов
  5. добавьте инструмент наведения на вашу фигуру

Пример:

import bokeh.models as bkm
import bokeh.plotting as bkp

source = bkm.ColumnDataSource(data=your_frame)
p = bkp.figure(tools='add the tools you want here, but no hover!')
g1 = bkm.Cross(x='col1', y='col2')
g1_r = p.add_glyph(source_or_glyph=source, glyph=g1)
g1_hover = bkm.HoverTool(renderers=[g1_r],
                         tooltips=[('x', '@col1'), ('y', '@col2')])
p.add_tools(g1_hover)

# now repeat the above for the next sets of glyphs you want to add. 
# for those you don't want tooltips to show when hovering over, just don't 
# add hover tool for them!

Кроме того, если вам нужно добавить легенду к каждому из добавляемых вами глифов, попробуйте использовать метод bokeh.plotting_helpers._update_legend() . github источник , например:

_update_legend(plot=p, legend_name='data1', glyph_renderer=g1_r)

Поделиться WillZ     20 августа 2015 в 11:25



13

Вам нужно назвать свой глиф атрибутом name= на глифе,для которого вы заинтересованы в активном инструменте наведения, а затем установить это имя в атрибуте names= инструмента наведения. (Обратите внимание на атрибут name= глифа fig.line в приведенном ниже примере.

hover = HoverTool( mode='vline', line_policy='nearest', names=['ytd_ave'],
    tooltips=[
        ("Week Number", "@WeekNumber"),
        ("OH for the Week", "@OverHead{0.00}%"),
        ("OH Average", "@AveOverHead{0.00}%"),
        ("Non-Controllable Hours", "@NonControllableHours{0.0}"),
        ("Controllable Hours", "@ControllableHours{0.0}"),
        ("Total Hours", "@TotalHours{0.0}"),
    ]
)

fig = Figure(title='Weekly Overhead', plot_width=950, plot_height=400,
         x_minor_ticks=2, tools=['pan', 'box_zoom', 'wheel_zoom', 'save',
                                 'reset', hover])

ch = fig.vbar('WeekNumber', top='ControllableHours', name='Over Head', 
         color='LightCoral', source=sources, width=.5)
nch = fig.vbar('WeekNumber', bottom='ControllableHours', top='TotalOHHours',
         name='Non-Controllable Over Head', color='LightGray', 
         source=sources, width=.5)
bh = fig.vbar('WeekNumber', bottom='TotalOHHours', top='TotalHours',
         name='Project Hours', color='LightGreen', source=sources,
         width=.5)

ave = fig.line('WeekNumber', 'AveOverHead', source=sources, color='red',
         y_range_name='Percent_OH', name='ytd_ave')

Поделиться Nickleman     03 мая 2017 в 12:08



10

Ответ Уилла Чжана будет работать, но в конечном итоге вы получите несколько инструментов наведения. Если это нежелательно, вы можете добавить визуализаторы к существующему инструменту наведения курсора:

from bokeh import plotting
from bokeh.models import HoverTool, PanTool, ResetTool, WheelZoomTool

hover_tool = HoverTool(tooltips=[('col', '@x'),('row', '@y')])  # instantiate HoverTool without its renderers
tools = [hover_tool, WheelZoomTool(), PanTool(), ResetTool()]  # collect the tools in a list: you can still update hover_tool

plot = plotting.figure(tools=tools)
plot.line(x_range, y_range)  # we don't want to put tooltips on the line because they can behave a little strange
scatter = plot.scatter(x_range, y_range)  # we assign this renderer to a name...
hover_tool.renderers.append(scatter)  # ...so we can add it to hover_tool's renderers.

Итак, различия здесь:

  1. Вы можете создать свой глиф на высоком уровне, используя интерфейс plotting , и это все равно будет работать.
  2. Вам не нужно каждый раз создавать новый HoverTool (если только вам не нужны разные всплывающие подсказки), просто добавьте его в рендеры существующего инструмента.

Поделиться tterry     01 июня 2016 в 02:30


  • Chart.js настройка всплывающих подсказок

    Мне было интересно, как добавить символ типа % к числовому значению всплывающих подсказок? Я искал в документах, но не смог найти его, однако на своем главном сайте они добавили значение размера kB к всплывающим подсказкам pie Как я могу достичь чего-то подобного? Спасибо

  • Какой самый эффективный способ построить 300-400 глифов в Боке?

    При кодировании серверных приложений Боке, которые производят 300-400 глифов, я нахожу, что большая часть времени тратится на циклическое прохождение 300-400 ColumnDataSources, чтобы настроить их для построения графика. for key in keys: #There are 400+ keys coding for 400+ ColumnDataSources…



2

UPDATE от сопровождающих: hover IS теперь поддерживается как на линиях, так и на изображениях



OBSOLETE :

Наведение курсора в настоящее время не поддерживается для глифов типа изображения и линейных глифов. Таким образом, использование одного из этих глифов в сочетании с глифами, поддерживающими подсказку инструмента наведения, может быть обходным решением.

Видеть: http://docs.bokeh.org/ванной/последний/документы/user_guide/объектов.html#hovertool

Поделиться dyingoptimist     06 апреля 2015 в 05:29


Похожие вопросы:


Какие плагины всплывающих подсказок совместимы с jQuery 1.5 (текущая версия)?

Есть тонна превосходных плагинов всплывающих подсказок для jQuery, но большинство из них кажутся устаревшими. В частности, мы хотели использовать qTip, но он поддерживает только jQuery 1.3. Какие…


Настройка всплывающих подсказок в календаре asp.net

Как можно настроить Go to the previous month и Go to the next month всплывающих подсказок-это стандартный элемент управления календарем asp.net. Спасибо!


Highcharts форматирование всплывающих подсказок для общих всплывающих подсказок

Если, например, у меня есть диаграмма с тремя рядами в ней и всплывающие подсказки настроены на общий доступ, я хотел бы больше контролировать форматирование всплывающих подсказок. В настоящее время…


Увеличение горизонтального смещения всплывающих подсказок Bootstrap

Кто-нибудь знает, есть ли простой способ увеличить смещение всплывающей подсказки для всплывающих подсказок Bootstrap? В документах ничего нет. В некоторых случаях всплывающая подсказка затемняет…


Отключить Swing всплывающих подсказок по параметру командной строки

Есть ли способ отключить отображение всплывающих подсказок в приложении Swing (JRE6+, Motif look and feel) без изменения исходного кода? У меня есть развернутое приложение, которое в одном случае…


Chart.js настройка всплывающих подсказок

Мне было интересно, как добавить символ типа % к числовому значению всплывающих подсказок? Я искал в документах, но не смог найти его, однако на своем главном сайте они добавили значение размера kB…


Какой самый эффективный способ построить 300-400 глифов в Боке?

При кодировании серверных приложений Боке, которые производят 300-400 глифов, я нахожу, что большая часть времени тратится на циклическое прохождение 300-400 ColumnDataSources, чтобы настроить их…


Инициализация «hidden» всплывающих подсказок при загрузке страницы

Приветствую всех 🙂 Мой вопрос касается всплывающих подсказок bootstrap. У меня есть куча подсказок на моей странице (5, если быть точным). Всплывающие подсказки выглядят (более или менее) так:…


настройка всплывающих подсказок в голографическим изображением

кто-нибудь знает, как изменить всплывающих подсказках при использовании голограмму с боке серверной? в моей записной книжке и через голограмму для визуализации активировать всплывающие подсказки с…


Показать hovertool для самого верхнего глифа в Боке?

У меня есть график с несколькими сотнями глифов на нем, созданный в Боке. Все глифы имеют связанный с ними hovertool, который показывает всплывающее окно с изображением в нем при наведении мыши….

bokeh — Bokeh: включить инструмент наведения на глифы изображения

Можно ли включить инструмент для наведения на изображение (глиф, созданный image(), image_rgba() или image_url()), чтобы он отображал некоторые контекстные данные при наведении на точки изображения. В документации я нашел только ссылки и примеры для инструмента наведения на глифы, такие как линии или маркеры.

Возможное решение:

Я думаю, что возможно преобразовать данные 2D-сигнала в столбчатый формат Dataframe со столбцами для x, y и значения. И используйте rect глиф вместо изображения. Но это также потребует правильной обработки цветового картографирования. В частности, обработка случая, когда значения являются действительными числами, а не целыми числами, которые можно передать в какую-либо цветовую палитру.

1

Alexander Reshytko 20 Фев 2017 в 02:35

3 ответа

Лучший ответ

Bokeh версия 0.12.16 поддерживает HoverTool для image glyphs. Видеть: выпуск боке 0.12.16

Вот подход, который я использовал для наведения на изображения с помощью bokeh.plotting.image и добавления поверх него невидимого (alpha=0) bokeh.plotting.quad, который имеет возможности наведения для координат данных. И я использую его для изображений с примерно 1500 строк и 40000 столбцов.

# This is used for hover and taptool    
imquad = p.quad(top=[y1], bottom=[y0], left=[x0], right=[x1],alpha=0)

Полный пример и изображение с возможностью выбора минимального и максимального значений цветовой панели, а также выбора color_mapper представлены здесь: Утилиты для интерактивных научных сюжетов с использованием python, bokeh и javascript. Update: Последние версии bokeh уже поддерживают matplotlib cmap палитры, но когда я создал этот код, мне нужно было сгенерировать их из matplotlib.cm.get_cmap

В показанных там примерах я решил не показывать подсказку на изображении с tooltips=None внутри функции bokeh.models.HoverTool. Вместо этого я отображаю их в отдельном bokeh.models.Div глифе.

1

Pablo Reyes 15 Май 2018 в 17:30

Хорошо, после более глубокого изучения документов и примеров, я, вероятно, сам отвечу на этот вопрос.

Эффект наведения на данные изображения (2d-сигнал) не имеет смысла в том, как эта функциональность разработана в Bokeh. Если нужно добавить некоторую дополнительную информацию, прикрепленную к точке данных, ему нужно поместить данные в правильную модель данных — плоскую.

Приведение в порядок данных

По сути, нужно привести свои данные в табличный формат с помощью столбцов x, y и value (см. статья Tidy Data (автор H.Wickham ). Теперь каждая строка представляет точку данных, и естественно можно добавить любую контекстную информацию в качестве дополнительных столбцов.

Например, следующий код сделает работу:

def flatten(matrix: np.ndarray,
            extent: Optional[Tuple[float, float, float, float]] = None,
            round_digits: Optional[int] = 0) -> pd.DataFrame:

    if extent is None:
        extent = (0, matrix.shape[1], 0, matrix.shape[0])

    x_min, x_max, y_min, y_max = extent

    df = pd.DataFrame(data=matrix)\
        .stack()\
        .reset_index()\
        .rename(columns={'level_0': 'y', 'level_1': 'x', 0: 'value'})

    df.x = df.x / df.x.max() * (x_max - x_min) + x_min
    df.y = df.y / df.y.max() * (y_max - y_min) + y_min

    if round_digits is not None:
        df = df.round({'x': round_digits, 'y': round_digits})

    return df

rect глиф и ColumnDataSource

Затем используйте rect глиф вместо image с x, y, сопоставленными соответственно, и столбец значения, сопоставленный с цветом, соответствующим эстетике цвета глифа.

Сопоставление цветов для значений

  • здесь вы можете использовать нормализацию min-max с последующим умножением на количество цветов, которые вы хотите использовать, и round
  • используйте встроенные палитры bokeh, чтобы отобразить вычисленное целочисленное значение в конкретное значение цвета.

Со всем сказанным, вот пример функции диаграммы:

def InteractiveImage(img: pd.DataFrame,
          x: str,
          y: str,
          value: str,
          width: Optional[int] = None,
          height: Optional[int] = None,
          color_pallete: Optional[List[str]] = None,
          tooltips: Optional[List[Tuple[str]]] = None) -> Figure:
    """

    Notes
    -----
        both x and y should be sampled with a constant rate
    Parameters
    ----------
    img
    x
        Column name to map on x axis coordinates
    y
        Column name to map on y axis coordinates 
    value
        Column name to map color on
    width
        Image width
    height
        Image height
    color_pallete
        Optional. Color map to use for values
    tooltips
        Optional.
    Returns
    -------
        bokeh figure
    """

    if tooltips is None:
        tooltips = [
            (value, '@' + value),
            (x, '@' + x),
            (y, '@' + y)
        ]

    if color_pallete is None:
        color_pallete = bokeh.palettes.viridis(50)

    x_min, x_max = img[x].min(), img[x].max()
    y_min, y_max = img[y].min(), img[y].max()

    if width is None:
        width = 500 if height is None else int(round((x_max - x_min) / (y_max - y_min) * height))
    if height is None:
        height = int(round((y_max - y_min) / (x_max - x_min) * width))

    img['color'] = (img[value] - img[value].min()) / (img[value].max() - img[value].min()) * (len(color_pallete) - 1)
    img['color'] = img['color'].round().map(lambda x: color_pallete[int(x)])

    source = ColumnDataSource(data={col: img[col] for col in img.columns})

    fig = figure(width=width,
                 height=height,
                 x_range=(x_min, x_max),
                 y_range=(y_min, y_max),
                 tools='pan,wheel_zoom,box_zoom,reset,hover,save')

    def sampling_period(values: pd.Series) -> float:
        # @TODO think about more clever way
        return next(filter(lambda x: not pd.isnull(x) and 0 < x, values.diff().round(2).unique()))

    x_unit = sampling_period(img[x])
    y_unit = sampling_period(img[y])

    fig.rect(x=x, y=y, width=x_unit, height=y_unit, color='color', line_color='color', source=source)
    fig.select_one(HoverTool).tooltips = tooltips

    return fig

#### Примечание: однако это идет с довольно высокой вычислительной ценой

1

Alexander Reshytko 7 Мар 2017 в 11:06

Основываясь на ответе Александра Решитко, приведенном выше, я реализовал версию, которая в основном готова к выпуску, с некоторыми примерами. Это должно быть немного более простым, чтобы изменить в соответствии с вашим собственным приложением, и не полагаться на кадры данных Pandas, которые я на самом деле не использую или не понимаю. Код и примеры на Github: Bokeh — изображение с помощью HoverTool

1

Alex Whittemore 9 Мар 2017 в 21:33

42334271

Фотография 101 с боке | Контрастно

Если вы любитель или профессиональный фотограф, вы должны были встретить слово « Bokeh » (произносится как BOH-kay) не раз. Если это звучит по-японски, то это потому, что это так. Боке (или бокэ) на самом деле означает размытие или дымку.

В фотографии это относится к эффекту, создаваемому областями фотографии, которые не в фокусе (особенно фон). Фотографы, которые используют этот эффект, играют с объективом, диафрагмой и фокусом и используют небольшую глубину резкости.


Боке, фото Эндрю Абогадо

Термин «боке» также происходит от японского слова « boke-aji », что означает качество размытия.

Характеристики хорошего и плохого боке

Если вы хороший фотограф, это не значит, что вы всегда будете получать хорошее боке, особенно если вы делаете это впервые. Чтобы добиться хорошего боке, нужно много практики, настойчивости и терпения. Это, конечно, помимо знаний.

Чтобы дать вам представление о разнице между хорошим и плохим боке, ниже приведены описания каждого из них.

  • Хорошее боке — приятное для глаз; то, что легко привлекает. Фон кремовый и мягкий; подробностей почти нет. Хорошее боке означает фон без резких краев и резкости. Ничто на заднем плане не должно отвлекать аудиторию или зрителя. Размытая область должна иметь круглые и гладкие световые круги. Линии, которые находятся не в фокусе, должны быть размыты, а точки, которые пересекаются, должны сливаться друг с другом. Некоторые люди описывают хорошее боке как боке с мягким фоном; но это, по сути, то, что вам нужно дать вашей аудитории — то, что заставит их заметить центральный объект и картину в целом.
  • Плохое боке — полная противоположность указанным выше. Показанный фон имеет четкие линии, двойные линии и круги с острыми краями. На этих линиях есть яркие пятна, которые легко отвлекают любого зрителя. Также будут двойные линии. Другими словами, плохое боке отвлекает внимание от объекта.

Однако это не означает, что плохое боке не может быть полезным. У некоторых фотографов есть способ превратить плохое боке в творческое занятие, которое нравится зрителям.

Нейтральный боке

Если боке не хорошее или плохое, его называют нейтральным боке. На самом деле линз с эффектом боке не существует, но есть такие, которые могут дать такой эффект. В этом типе свет в круге размытия ровный. Края довольно четко очерчены, а линии по-прежнему резкие. Технически нейтральное боке описывается как идеальные маленькие круги.

Формы

Боке бывают разных форм, и это во многом зависит от типа камеры, которую вы используете.В частности, диафрагма объектива определяет форму боке. Например, камеры с семью прямыми лезвиями в диафрагме объектива дают боке в форме семиугольника. Восемь лезвий дают многоугольное боке, а девять закругленных лезвий — круглые.

Итак, тип объектива и его число или форма диафрагмы помогут вам добиться желаемого эффекта боке.

Что нужно для получения хорошего боке

Чтобы получить хорошее боке, нужно больше, чем просто знание подходящего объектива и страсть к фотографии.Вы должны быть готовы потратиться на камеры с профессиональными зум-объективами. Выбирайте те, у которых диафрагма с круглым лезвием, так как они обычно дают мягкое кремовое боке. Если вы не можете позволить себе купить полный набор камер с указанной диафрагмой, вы всегда можете выбрать более простые модели, а затем искать телеобъектив с автофокусом, который поможет вам. Одним из таких примеров является Canon 85mm f / 1.2II USM, модель с большой диафрагмой, которая эффективно размывает фон.

Хотя это клише, практика действительно ведет к совершенству.Так что вам очень поможет, если вы попрактикуетесь с камерой, прежде чем приступить к достижению своей цели. Так что поиграйте и попрактикуйтесь с камерой, особенно с объективом.

Вот несколько вещей, которые вы можете сделать, если хотите проверить возможности боке вашего объектива:

  • Найдите интересующий вас объект. Поместите его (если это еще не так) в области или пространстве не слишком далеко от вас. Проверьте, насколько близко ваш объектив позволит вам сфокусироваться, и выберите ближайшее расстояние.Примеры хороших сюжетов: рождественские огни или огни дискотек и цветы в вазе.
  • После того, как вы определили объект, его положение и фокус, очистите фон, чтобы ни один объект не находился прямо позади него. Следите за тем, чтобы на заднем плане не было предметов на расстоянии 5–6 футов. Кроме того, ваш фон должен быть красочным и светлым.
  • Встаньте на том же уровне (не ниже и не выше) объекта. Затем перейдите к настройке камеры в режим диафрагмы («A» на настройках или на диске управления).Выберите наименьшее или наименьшее число диафрагмы (поскольку оно имеет наибольшую апертуру).
  • Теперь вы готовы сделать снимок вашего объекта. Однако перед этим убедитесь, что ваш объект находится в фокусе. Фон должен быть размытым.
  • Если у вашего объектива хорошие характеристики боке, ваше изображение должно получиться так, чтобы объект был точно в фокусе, а фон был размытым наиболее приятным образом: кремовый, мягкий, гладкий (без резких краев и двойных линий). В целом фотография должна правильно привлекать внимание: объект должен быть четким.

Опять же, практика поможет вам достичь идеальных (или близких к идеальным) результатов. Поэтому вам не следует останавливаться после всего лишь одной практики. Продолжайте практиковаться и учиться. Вам также следует поискать фотографические группы или клубы, которые предлагают мероприятия, связанные с боке. Помимо того, что вы узнаете больше о боке, вы также встретите людей, которые разделяют вашу страсть и желание делать хорошие фотографии.

Фотография с эффектом боке — не новость. Он существует уже много лет, но его популярность постоянно растет, поскольку все больше и больше людей увлекаются фотографией или пытаются увлечься фотографией.Кроме того, теперь все больше фотографов готовы использовать творческие инновации и концепции в своей профессии (или хобби).

Что такое боке в фотографии? — Все, что вам нужно знать

Кредит: Эдгар Сервантес / Android Authority

Большинство людей даже не знают, как его произносить, и те, кто действительно спорит о его произношении. Боке — один из самых популярных фотоэффектов, настолько популярный, что смартфоны используют программные улучшения, чтобы попытаться воспроизвести его (безуспешно).Каждый фотограф и энтузиаст встречал этот термин, и сегодня мы здесь, чтобы рассказать вам о нем.

Также: Эти советы по фотосъемке помогут вам добиться отличных результатов


Что такое боке?

Начнем с произношения. Боке — это японское слово, из-за которого его сложно произносить для любого англоговорящего (и для любого, кто не говорит по-японски, если на то пошло). IPA (Международный фонетический алфавит) Оксфордского словаря описывает произношение слова как / bōˈkā / / boʊˌkeɪ / .Вы можете послушать звукозапись на сайте Lexico.com. Теперь, когда вы знаете, как это сказать, мы можем продолжить (и вы можете спорить о том, как это говорится во всей сети).

Проще говоря, боке означает качество не в фокусе областей на заднем и переднем планах фотографии. Многие считают, что это синоним размытия фона, что не совсем так. Боке вместо этого указывает на то, насколько хорошо выглядит размытие фона.


Хорошее и плохое боке

Плохое боке: Nikon 18-55mm f / 3.Комплектный объектив 5-5.6 Хорошее боке: Nikon 105mm f2.8 Macro Lens

Не существует стандарта, который бы квалифицировал боке как хороший или плохой, поэтому это субъективный вопрос. Как правило, хорошее боке оценивается количественно по тому, насколько круглыми становятся световые шары и насколько гладкими или «кремовыми» объективом визуализируется нефокусная область.

Плохое боке имеет более резкие края. У него также может быть семиугольное световое размытие, проблема, вызванная семилопастной диафрагмой. Улучшенные линзы имеют девять лепестков диафрагмы и создают круглую форму.


Как создается боке?

Малая глубина резкости. Снято с диафрагмой f / 1.8. Большая глубина резкости. Снято с диафрагмой f / 8.

На эффект боке напрямую влияет глубина резкости. Глубина резкости — это область, которая будет в фокусе при съемке фотографии. Все, что находится позади или перед этим ярдом, больше не будет резким. Выше представлен образец пары изображений, одно с очень малой глубиной резкости, а другое — с большей глубиной резкости.

На глубину резкости, в свою очередь, влияют четыре основных фактора: диафрагма, размер сенсора, фокусное расстояние и расстояние по отношению к объекту.Более широкая диафрагма сокращает глубину резкости и создает большее размытие, в то время как более узкая диафрагма увеличивает глубину резкости и позволяет лучше сфокусироваться. Больший размер сенсора заставит вас приблизиться к объекту и / или увеличить фокусное расстояние, что уменьшит глубину резкости и создаст большее размытие.

Подробнее: Что такое приоритет диафрагмы и когда его использовать?

Таким образом, чтобы добиться максимального размытия, необходимо убедиться, что вы делаете все возможное, чтобы уменьшить глубину резкости.Это будет означать съемку с максимальной диафрагмой и размером сенсора, которые вы можете получить, при этом приближаясь и максимально увеличивая масштаб.


Качество линз имеет значение

Теперь, когда вы знаете, как регулируются глубина резкости и размытость, пора поговорить о боке. Хотя мы не говорим, что оборудование имеет значение, в данном случае это очень важный фактор для получения качественного боке. В частности, хорошее боке во многом зависит от качества вашего объектива.

Объектив — это то, что будет отображать размытие и определять боке, а это значит, что вы должны стремиться к оптике самого высокого качества, которую только можете найти.Также важно использовать светосильный объектив с широкой диафрагмой. Зум-объективы профессионального уровня с широкой диафрагмой могут быть дорогими, но они отлично справляются с боке. Тем, кто не хочет тратить кучу денег и хочет получить красивое боке, стоит обратить внимание на объективы с постоянным фокусным расстоянием (с неизменяемым фокусным расстоянием), которые часто изготавливаются из прекрасного стекла и могут иметь очень широкую диафрагму по более комфортной цене.

После того, как вы нашли лучшие объективы, все, что вам нужно сделать, это применить методы, описанные в предыдущем разделе, чтобы максимально уменьшить глубину резкости.

Также: Это 10 лучших объективов DSLR для любой камеры


Остерегайтесь навязчивой идеи боке

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

Если фотография не будет хорошо смотреться со всем в фокусе, она, вероятно, не будет хорошо смотреться и с размытыми частями.

Эдгар Сервантес

Поскольку красивое боке обычно сопровождается меньшей глубиной резкости, важные части изображения часто видны не в фокусе. Или иногда на заднем плане есть что-то, что добавит значимости изображению, но незаметно из-за существенного размытия. Я видел, как фотографы забывают о таких важных факторах, как композиция, теория цвета, баланс и все другие факторы.

Если фотография не будет хорошо смотреться со всем в фокусе, она, вероятно, не будет хорошо смотреться и с размытыми частями.Думайте о боке как об улучшении снимков, а не как о корректирующем инструменте.


Фотография — это сложное искусство, поэтому мы собрали серию руководств и подробных материалов, чтобы вы могли узнать больше!

Боке

Боке
© 2008 KenRockwell.com. Все права защищены.

ЧТО ЕСТЬ БОКЕ?

см. Также Сравнение боке среди шести объективов Nikon.

Боке описывает отображение расфокусированных точек света.

Боке отличается от резкости. Острота это то, что происходит в точке наилучшего сосредоточения. Боке это то, что происходит вдали от точки наилучшего фокуса.

Боке описывает внешний вид или «ощущение» вне фокуса. Боке — это , а не , насколько что-то не в фокусе, боке — это характер любого размытия.

К сожалению хорошее боке не получается автоматически в дизайн линз. Идеальные линзы передают расфокусированные точки света как круги с острыми краями. Идеальное боке могло передать каждый из этих точки как размытые, а не резкие круги. Математики сказали бы распределение интенсивности размытых кругов прямоугольное в идеальные линзы и хорошее боке предпочли бы распределение Гаусса. Это одна из областей, в которой физика не отражает того, что мы хотим художественно.

Различие количество сферической аберрации влияет на расфокусировку линз точки света и, следовательно, их боке. Приходит слово «боке» от японского слова «бокэ» (произносится как бо-кех), которое буквально означает нечеткость или головокружение.

А технически совершенный объектив не имеет сферической аберрации. Поэтому идеальный линза фокусирует все световые точки как световые конусы позади линзы. Изображение будет в фокусе, если пленка находится именно там, где конус достигает его лучшая точка.Чем лучше объектив, тем мельче становится эта точка.

Если пленка не совсем там, где конус света достигает своего мельчайшего точка, то эта точка изображения не в фокусе. Тогда эта точка отображается на пленке как световой диск, а не как точка. Этот диск еще называют «размытым кругом» или «кругом». путаницы «людьми, вычисляющими диаграммы глубины резкости. объектив без сферической аберрации, этот размытый круг равномерно освещен диск.Все точки вне фокуса выглядят как идеальные диски с острыми краями. (Хорошо, при меньших значениях диафрагмы, когда изображение хорошо фокусируется, вы могут появиться дополнительные «воздушные» кольца по кругу, но это дифракционная картина, которую мы здесь не обсуждаем.) Это не оптимально для боке, поскольку, как вы понимаете, острый край этих дисков может начать давать определение вещам, которые должны быть не в фокусе.

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

Реал линзы имеют некоторую степень сферической аберрации. Это означает, что в попрактиковаться, даже если весь свет, проходящий через линзу из одной точки на эту тему может встретиться в красивом, крошечном месте фильма, что светораспределение внутри самого конуса может быть неравномерным. Да мы становится здесь абстрактным, поэтому некоторые более плотные фотографы отказываются чтобы попытаться понять боке.

Иллюстрации

Пример плохого боке. Размытые веточки не в фокусе все еще видны. острые края. У хорошего боке будут мягкие размытия.

Сферический аберрация означает, что диски, сделанные не в фокусе, на предмете не будет равномерно освещен. Вместо этого они, как правило, имеют больше свет собирается в середине диска или по направлению к краям. Вот некоторые иллюстрации:

Фиг.1. Плохое боке. Это сильно увеличенный круг размытия, показывающий очень плохое боке. Круг размытия — это то, как точка не в фокусе рендерится свет. Обратите внимание на то, как края четко очерчены и даже подчеркнуто для точки, которая должна быть не в фокусе, и что центр тусклый.
Рис 2. Нейтральное боке. Это технически совершенный и равномерно освещенный размытие круга.Это тоже нехорошо для боке, потому что край все еще хорошо определен. Объекты, не в фокусе, либо светящиеся точки или линий, может эффективно создавать достаточно четкие линии на изображение из-за краев резкого размытого круга. Это размытие круг от большинства современных линз, созданный так, чтобы быть «идеальным».
Рис.3. Хорошее боке. Вот что мы хотим. Это отлично подходит для боке, так как край полностью не определен.Это тоже результат та же сферическая аберрация, но в противоположном направлении плохой пример, показанный на рис. 1. Здесь начинается искусство и инженерия. расходиться, поскольку более красивое изображение является результатом несовершенства. Для идеального боке требуется распределение кругов с размытием по Гауссу и линзы. разработаны для нейтрального примера, показанного в 2.) выше.

Как вы могли собраться, если свет имеет тенденцию собираться к середине дисков не в фокусе на одной стороне конуса, тогда он будет собирать на внешней стороне дисков с другой стороны конуса.Недокорректированный сферическая аберрация приводит к тому, что свет собирается в одну сторону, с чрезмерной коррекцией сферическая аберрация заставляет его накапливаться в другом. Следовательно, объектив с отличным боке для заднего плана имеет ужасное боке для переднего плана, наоборот.

вещей становится еще страннее отсюда. Еще один важный фактор — насколько резко снаружи круга размытия. Даже если у нас плохая подпись, похожая к рис.1), если внешний край этого отрисован мягко, как в AF-S Nikkor 80-200 f / 2.8, мы хорошего боке.

Художественно большинство людей предпочитают более резкий передний план и более мягкий фон. Нечеткий передний план сводит людей с ума, а нечеткий фон — отлично. Поэтому я классифицирую объективы с хорошим боке как объективы с хорошим боке. фон боке. Лично я избегаю ничего нечеткого на переднем плане перемещая камеру или объект переднего плана.

The Причина, по которой боке обсуждается в фотографии, заключается в том, что мы предпочитаем мягкую расфокусировку области на твердые, которые, кажется, принимают текстуру, даже если все не в фокусе. Из-за этого предпочтительнее тем, кто хочет мягкие области вне фокуса, чтобы обеспечить распределение света внутри каждый круг размытия должен быть сконцентрирован ближе к центру размытия круг. Таким образом, каждый круг размытия становится ярким пятном, постепенно уменьшайте яркость по направлению к краям.Таким образом, все размытые круги смешиваются мило.

Вкл. с другой стороны, если кто-то пытается сделать все как можно более резким, эти эффекты боке будут работать по-разному, где ваше изображение близко чтобы быть в центре внимания. Если сомневаетесь, попробуйте. Дизайн линз очень быстро становится очень странно.

Есть не является мерой для боке, поскольку ученые стремятся к посредственному пример рисунка 2.) как их «идеальный» объектив.Как все еще в искусстве вы оцениваете боке, глядя на изображение.

Nikon’s Управление расфокусировкой, или DC, линзы

Nikon’s Объективы Defocus Control, или DC, для их популярных 35-мм зеркальных фотоаппаратов на самом деле позволяют манипулировать характером коррекции сферической аберрации чтобы можно было определить область хорошего боке либо в передний план или фон. Это также позволяет изменять количество сферическая аберрация для полного контроля.

Рефлекс и зеркальные линзы

Зеркало, или зеркальные линзы имеют ужасное боке. Это потому, что у них есть реле зеркало в передней части линзы, которое закрывает центральную часть светосила объектива. Таким образом, представлены все расфокусированные основные моменты. как пончики, что выглядит неестественно и ужасно.

Leitz 90 мм f / 2.2 Thambar

Это был мягкофокусным объективом 1940-х годов с изюминкой.Сферическая аберрация была намеренно оставлены нескорректированными по бокам. Смягчение наиболее очевидно при полной диафрагма. Объектив становится резким, когда вы его останавливаете. Лейтц вытащил хитрый трюк и включал съемный передний фильтр с непрозрачной центральной круг. Центральный упор устраняет влияние линзы ‘ сильно скорректированная центральная часть и позволяет получить мягкое центральное изображение по желанию.

Мембрана Лезвия

The Форма и количество лепестков диафрагмы объектива мало связаны с боке.Они определяют форму размытого круга, но не определяют, как свет распространяется внутри этого круга. Эти круги больше не круги, но формы с таким же количеством сторон, как и лезвий. Например, с пятью лезвиями, как у большинства линз Hasselblad и Mamiya, получается пятисторонний пятиугольники как формы не в фокусе бликов вместо кругов. Это не так уж и здорово. С шестью лезвиями, чаще всего используется в дисконтных линзах для 35-мм зеркалки получаются шестиугольники.С семью лезвиями (большинство зеркальных фотокамер Nikkor линзы) все действительно начинает улучшаться, так как семигранные семиугольники начинают выглядеть как круги вместо узнаваемых форм. Девять лезвий (часто встречается на телеобъективах Nikkor) великолепны, и в последнее время их разрабатывают с изогнутыми лезвиями, чтобы дать точную форму круга.

Нечетный количество лопастей даст дифракционные и отражающие звезды вокруг очень яркие световые точки, которые имеют вдвое больше точек, чем количество лопастей.Например, семилепестковая диафрагма даст прекрасная 14-конечная звезда. Четное количество лезвий даст звезды с столько же очков, сколько у вас лезвий. Восьмилопастная диафрагма подарит скучную восьмиконечную звезду.

Опять же, насколько хорошо мы приближаемся к кругу, — это лишь малая часть уравнения. Важная часть — это то, как распределяется свет. Очевидно на полном диафрагма, где большинство людей беспокоится об этом, диафрагма не играет никакой роли.

The причина, по которой некоторые производители пытаются провести корреляцию между боке и количество лепестков диафрагмы, потому что легко увидеть, сколько лезвия есть на прилавке, но их почти невозможно увидеть боке.

Как Видеть Боке

В Существующие изображения

Смотреть для точек света на заднем плане. Идеальные предметы для этого — далекие точки света ночью или иногда свет проникает сквозь листья или зеркальные отражения при дневном свете.

Если они все прекрасно сочетаются друг с другом, получается красивое боке. Если они идеальны маленькие кружочки, значит, это нейтральное боке. Если они все плавают и смотришь маленькие свернутые презервативы или пончики, тогда это плохое боке.

Если все они представляют собой правильные многоугольники, которые говорят о форме диафрагмы объектива. Да, вы действительно можете сказать, сколько лепестков было у диафрагмы объектива!

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

Если все они плоские эллипсоиды (вертикальные овалы примерно вдвое выше так как они широкие), то это говорит о том, что изображение было снято с анаморфная линза. Вы увидите это в кинофильмах, а не в в неподвижных фотографиях.

В Ваш объектив

Найти точка света вдалеке. Вы можете легко сделать это ночью найти дальний точечный уличный фонарь, или вы можете сделать это в помещении, взяв отражатель от фонарика Mag-Light и просто включите его другая сторона комнаты.

Сейчас смотрите на матовое стекло во время фокусировки. Если вы видите идеальные круглые диски у вашего объектива нейтральное боке, если вы видите мягкие формы, у вас хорошее боке, а если вы видите пончики, у вас плохое боке.

Если вы видите что-то кроме нейтрального боке, вы увидите качество боке меняется, когда вы фокусируетесь как перед, так и за точкой света. Конечно, обычно вы не можете сосредоточиться дальше далекой точки свет, если у вас нет обзорной камеры или объектива, позволяющего фокусировать за гранью бесконечности.

Примеры

Это сложно, так как у меня действительно нет явно плохих или хороших изображений чтобы показать, и я не буду копировать чужие работы, чтобы показать вам.

Для плохое боке взгляните на флаер Fuji за июль 2004 г. с зелеными квадратами на обложке с надписью «В правильных руках технология может стать Beautiful Thing. «Внутри обложки отличный снимок Индеец играет на флейте в Сионе — Тим Мейер.Посмотрите, как маленький яркий точки от всех листьев на заднем плане заняты и почти выглядят как свернутые презервативы? Это пример плохого боке. Да, технические детали не имеют ничего общего с тем, насколько хорош снимок, и да, насколько мы знаем, это именно то, что хотел Тим. Просто знаю что у вас есть контроль над этой частью внешнего вида изображения на основе на ваш выбор линз.

Подробнее

Также ознакомьтесь с длинной статьей Zeiss о глубине резкости и боке.

Что такое боке и как его произносить? — LucidPix

Что такое боке и как его произносить?

Одна из самых больших тенденций в фотографии сейчас — это добавление боке к нашим изображениям. Итак, что же такое боке, почему оно нам так нравится и как правильно произносить это слово?

Что такое боке?

Проще говоря, боке — это размытие или визуальное смягчение фона на фотографии. Однако, когда мы говорим о боке, нас меньше беспокоит , если у есть размытие фона, а больше интересует качество размытия: сколько там размытия? Какой формы размытые объекты? Как размытие повышает качество и интерес к фотографии?

Как и Златовласка, боке лучше всего, когда оно правильное.Слишком много боке может мешать, а слишком маленькое может заставить зрителя задуматься, на какой части изображения им следует сосредоточиться.

Как создается боке?

Боке — это результат диафрагмы объектива камеры, которая представляет собой размер отверстия, через которое свет попадает на матрицу камеры. Большое число диафрагмы приводит к небольшому отверстию объектива, а небольшое число диафрагмы приводит к большому отверстию. Диапазон диафрагмы, определяемый в единицах диафрагмы, различается для каждой комбинации объектива и датчика камеры.

Не вдаваясь в технические подробности, малое число диафрагмы диафрагмы приводит к малой глубине резкости, когда в фокусе находится только объект фотографии, а остальная часть изображения, включая объекты на переднем и заднем плане, размыта и не в фокусе. Это замечательно, когда вы снимаете портреты или натюрморты к следующему обеду. Кроме того, поскольку отверстие камеры является самым большим, на сенсор камеры попадает больше света, а это означает, что она лучше работает при слабом освещении.

Возьмем, к примеру, iPhone 4. Он оснащен объективом для одиночной камеры с диафрагмой f / 2,8 и s-сенсором шириной 3,85 мм. Однако то, что iPhone 4 имеет объектив f / 2,8, не означает, что его можно сравнить со стандартным объективом профессиональной камеры, который также имеет f / 2,8, поскольку фотодатчик iPhone 4 имеет ширину не 355 мм, а в 100 раз меньше — 3,85 мм широкий. Подсчет показывает, что для 35-миллиметрового эквивалента диафрагмы камеры iPhone 4 это 29,4 мм f / 21,4! Это большое число диафрагмы означает, что iPhone 4 с трудом снимает изображение с хорошим эффектом боке или размытым фоном, а также он изо всех сил пытается снимать в условиях низкой освещенности.

Обратите внимание на разницу в размере объектива между камерой DSLR и камерой iPhone.

Практически каждый смартфон, продаваемый сегодня, включая новейшие и лучшие iPhone и Android, не имеет возможности самостоятельно создавать великолепное боке. Их крошечные линзы и такие же маленькие сенсоры просто не могут взломать его без небольшой помощи продвинутого программного обеспечения, такого как LucidPix .

Боке, созданное на компьютере

Чтобы компенсировать физическую неспособность нашего смартфона создавать боке, мы изобрели программное обеспечение, способное создавать искусственное боке.Существуют базовые приложения для смартфонов, которые требуют, чтобы пользователи вручную выбирали, что должно быть в фокусе, а что не должно быть, а затем вручную размывать фон. К сожалению, это требует много времени и навыков, которых у нас не всегда.

LucidPix использует усовершенствованный механизм искусственного интеллекта 3D Fusion Engine для изучения вашей фотографии и отделения объекта от фона, автоматически создавая приятный искусственный эффект боке, без дополнительной работы! Достаточно одного нажатия кнопки в LucidPix , и вы получите фотографию с эффектом боке, которая не уступает по качеству профессиональным камерам за 5000 долларов.

Почему нам так нравится боке?

Когда фотография была впервые представлена, она была известна своей способностью воспроизводить мир именно таким, каким мы его видим. Нас больше не заставляли смотреть на сцену глазами художника — камера убирала все художественное творчество с изображений, которые она создавала. Проще говоря, они были точными копиями того, что мы видели в то время. Было задействовано очень мало творчества.

Боке помогает нам вернуть искусство в фотографию.Используя глубину резкости для выбора того, что находится в фокусе, а что не в фокусе, фотограф может творчески помочь зрителю понять, что на изображении важно, а что нет, позволяя изображению рассказывать свою собственную историю без необходимости объяснения.

Тоже неплохо! Фотография с приятным эффектом боке почти всегда будет выглядеть лучше, чем фотография без него.

Как сказать боке?

Многие люди не уверены в правильном произношении слова Боке.Изначально это японское слово, которое буквально переводится на английский как Blur, так что имейте это в виду, произнося его вслух. Официально это произносится как / ˈboʊkə /, BOH-kə или / ˈboʊkeɪ /. Ясно, как грязь, правда?

«ЛУК-ключ»

Фактическое произношение боке варьируется от места к месту. Самый распространенный способ сказать это похоже на слово букет, как в букете цветов. Вместо бу- в начале мы говорим поклон- и вместо того, чтобы заканчивать слово звуком -ай, мы заканчиваем его легким звуком «h», например, -ayh.Мы также подчеркиваем первую часть BOW- над второй частью -keyh.

В конце концов, пока ваша версия боке близка к другим, люди поймут суть. Вы можете сказать boh-kuh, bok-uh, boh-kay, и, возможно, даже букет, и большинство людей поймет, что вы пытаетесь донести.

Четыре способа создания потрясающего боке на ваших изображениях

Боке — это размытие фона изображения, а для фотографов потрясающее боке похоже на золото.Мы хотим этого, боремся за это, нам это нужно. Но как стабильно создавать потрясающие боке?

К счастью, есть несколько простых способов создать качественное фоновое боке.

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

Сначала я расскажу о таких методах, как увеличение расстояния от объекта до фона и широкоугольная съемка. Затем я объясню ситуации, улучшающие боке, такие как контровое освещение.Вы узнаете, как творчески создавать потрясающие боке на ваших собственных изображениях.

Что такое боке?

Вкратце о великолепном боке: в общем, боке — это просто размытие фона, создаваемое объективом. Однако есть два типа боке, на которых я собираюсь сосредоточиться здесь.

Первый — это то, что я назову геометрическим боке. Геометрическое боке — это расфокусированные блики, которые на самом деле принимают геометрическую форму. Эта конкретная форма зависит от природы линзы, но довольно часто встречаются круги, шестиугольники, семиугольники и восьмиугольники.

При правильном использовании этот тип боке может добавить яркости вашим изображениям.

Свет на заднем плане этого изображения создает геометрическое боке.

Я буду называть второй тип боке кремовым боке. Это плавный, расфокусированный вид, к которому часто стремятся фотографы.

На этом снимке ромашки очень кремовое боке.

Могут быть созданы оба типа боке, но для этого требуются несколько разные методы. Давайте посмотрим на каждого.

1. Стрельба широко раскрыта

Это действительно основа для создания потрясающего боке. Независимо от того, хотите ли вы геометрическое или кремовое боке, съемка на открытой диафрагме (то есть с диафрагмой в диапазоне f / 1,2–2,8) значительно увеличит ваши шансы на его достижение.

Здесь я остановлюсь на кремовом боке.

Широкая диафрагма помогла мне создать действительно кремовый фон боке.

Если вы опустите объектив так, чтобы глубина резкости была намного меньше, вы обнаружите, что теряете возможность получения красивого кремового фона.

Это связано с тем, что большая глубина резкости означает, что фон становится менее размытым. Чтобы получить максимально кремовое боке, вам нужно как можно больше размыть фон. Это так просто.

Чтобы добиться лучшего кремового боке, увеличьте диафрагму, чтобы уменьшить глубину резкости. Только тогда вы начнете получать красивый кремовый вид и потрясающее боке.

2. Сохраняйте хорошее расстояние от объекта до фона

Еще одним важным аспектом создания приятного боке является соблюдение хорошего расстояния между объектом и фоном.Как и в первом совете, это применимо как к кремовому, так и к геометрическому боке, но здесь я сосредоточусь на кремовом боке.

Когда я говорю о расстоянии между объектом и фоном, я имею в виду расстояние между элементами фотографии, которые находятся в фокусе (ваш объект), и элементами фотографии, которые не в фокусе, то есть вашим фоном.

Почему хорошее расстояние между объектом и фоном улучшает качество кремового боке?

Это связано с глубиной резкости.Большее расстояние между объектом и фоном означает, что глубина резкости (резкая область в изображении) заканчивается намного раньше фона. Фон затем рендерится в форме красивого размытия, а не в виде более сфокусированного беспорядка.

Итак, чтобы увеличить кремообразность боке, увеличьте расстояние между объектом и фоном.

3. Найдите яркие блики позади объекта

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

Эффектное геометрическое боке создается за счет бликов. Один из способов получить сильное геометрическое боке — поискать яркие огни на заднем плане.

Вода за этим цветком отражала заходящее солнце.

Этого можно добиться несколькими способами. Например, вы можете искать объекты, которые фильтруют солнечный свет, например, листья. Они разбивают солнечные лучи и превращают их в маленькие лучики света, которые затем превращаются в впечатляющее геометрическое боке.

Также можно искать элементы, отражающие свет.Вода — отличный вариант. Другой — капли воды. Области, мокрые от утренней росы, могут создавать красивое боке, если поместить их позади объекта.

В-третьих, вы можете искать небольшие источники света на заднем плане. Автомобильные фары, уличные фонари или рождественские огни — все хорошо, особенно при съемке после заката.

В-четвертых, если вы действительно хотите создать боке, но не можете найти подходящие условия, вы можете создать их самостоятельно. При съемке возьмите с собой гирлянду волшебных огоньков и поместите их позади объекта.

Я использовал волшебные огни, чтобы создать геометрическое боке на этом изображении.

Геометрическое боке не так уж часто встречается на фотографиях, но его довольно легко создать. Просто следуйте советам, рассмотренным выше!

4. Поместите объект в тень на ярком фоне

Этот метод создания потрясающего боке уникален тем, что с его помощью можно получить потрясающее кремовое боке при одностороннем использовании и потрясающее геометрическое боке при перевороте.

Оба способа предполагают, что объект съемки находится в тени.Оба метода также предполагают наличие яркого фона. В идеале снимать следует ранним утром или поздним вечером, когда солнце уже низко в небе.

Где расходятся техники, так это в расположении солнца.

Если вы снимаете с сильным фронтальным освещением, т. Е. Если солнце идет позади вас, через плечо, расположите объект так, чтобы красивый золотой свет падал на фон позади объекта (при этом объект остается затемненным).

Тогда этот золотой свет часто делает фон таким же золотым, и вы обнаружите, что ваше боке становится чудесным и кремовым.

Если вы снимаете с сильным контровым освещением, т. Е. Если солнце идет сзади объекта, расположите объект так, чтобы солнце проходило сквозь деревья, листья, ветки или траву. Как упоминалось выше, это создает яркие блики позади объекта.

Затем они превращаются в красивое геометрическое боке.

Не стесняйтесь экспериментировать. Попробуйте изменить количество тени на вашем объекте, переходя от полной тени к прямому контровому освещению.

Этот цветок имел более прямую подсветку.

Независимо от того, снимаете ли вы спереди или сзади, поместив объект в тень и работая в «золотые часы» восхода и заката, вы получите красивое боке.

Заключение

Хотя фотографам часто сложно создать красивое боке, это не должно быть сложно. Снимая с широкой диафрагмой, используя большое расстояние от объекта до фона, располагая объект таким образом, чтобы за ним присутствовали яркие блики, и используя специальные типы освещения, вы можете создавать изображения с потрясающим боке.

Знаете другие способы создания отличного боке? Поделитесь ими и своими изображениями с эффектом боке в поле для комментариев ниже.

Визуализация данных с боке и пандами

Содержание

Способность загружать необработанные данные, пробовать их, а затем визуально исследовать и представлять их — ценный навык в разных дисциплинах. В этом руководстве вы узнаете, как это сделать в Python с помощью библиотек Bokeh и Pandas. В частности, мы будем работать над визуализацией и исследованием аспектов бомбардировок Второй мировой войны, проводимых союзными державами.

По окончании урока вы сможете:

  • Загрузить табличные данные CSV
  • Выполнять основные манипуляции с данными, такие как агрегирование и подвыборка необработанных данных
  • Визуализация количественных, категориальных и географических данных для отображения в Интернете
  • Добавляйте различные типы интерактивности в свои визуализации

Для достижения этих целей мы рассмотрим различные примеры визуализации с использованием THOR, набора данных, описывающего исторические операции по бомбардировкам.

Набор данных THOR о Второй мировой войне

The Theater History of Operations Reports (THOR) перечисляет операции по воздушным бомбардировкам во время Первой мировой войны, Второй мировой войны, войны в Корее и войны во Вьетнаме, предпринятых Соединенными Штатами и союзными державами. Записи были составлены из рассекреченных документов подполковником Дженнсом Робертсоном. THOR становится общедоступным благодаря партнерству между Министерством обороны США и data.world.

Каждая строка в наборе данных THOR содержит информацию об одной миссии или бомбардировке.Эта информация может включать дату полета, места взлета и цели, тип цели, задействованный самолет, а также типы и вес бомб, сброшенных на цель. Словарь данных THOR предоставляет подробную информацию о структуре набора данных.

Для этого урока мы будем использовать модифицированную версию набора данных WWII THOR. Оригинальная полная версия набора данных состоит из 62 столбцов информации, оцифрованной с бумажных форм. Чтобы сделать этот набор данных более управляемым для наших целей, он был уменьшен до 19 столбцов, которые включают основную информацию о миссии и данные о бомбардировках.Эти столбцы обсуждаются ниже, когда мы впервые загружаем данные. Полный набор данных доступен для скачивания здесь.

Набор данных, используемый в этом руководстве, содержится в Thor_wwii.csv. Этот файл необходим для выполнения большинства приведенных ниже примеров.

Мы будем использовать боке и панды, чтобы ответить на некоторые из следующих вопросов:

  • Какие типы и вес боеприпасов были сброшены во время Второй мировой войны (Второй мировой войны)? Какие закономерности мы можем различить в использовании различных типов боеприпасов?
  • Как менялись типы и вес сброшенных боеприпасов в ходе Второй мировой войны? Как эти изменения соотносятся с крупными военными событиями?
  • По каким целям сбрасывались боеприпасы во время войны? Были ли определенные типы боеприпасов ограничены определенными театрами военных действий или целями?

Другие возможные наборы данных

Если этот набор данных не соответствует вашим интересам или вы хотите попрактиковаться после завершения этого руководства, вот еще несколько интересных наборов данных, которые вы, возможно, захотите использовать с Bokeh и Pandas:

  • Scottish Witchcraft Trials: многотабличный набор данных о более чем 4000 человек, обвиненных в колдовстве между 1536 и 1736 годами.

  • событий гражданских беспорядков: единая таблица, в которой перечислены более 60 000 событий гражданских беспорядков по всему миру после окончания Второй мировой войны.

  • База данных трансатлантической работорговли: доступные для поиска и настраиваемые табличные данные о 36 000 путешествий рабов, в ходе которых было перевезено более 10 миллионов рабов с 16 по 19 века.

Все три набора данных содержат количественные, качественные и временные данные, сопоставимые с данными набора данных THOR.Наборы данных о гражданских беспорядках и трансатлантической работорговле содержат пространственные данные, хотя их нет в данных Шотландских судебных процессов над колдовством.

Предварительные требования

Это руководство можно пройти в любых операционных системах. Для этого требуется Python 3 и веб-браузер. Вы можете использовать любой текстовый редактор для написания кода.

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

Если вы работаете в Python 2, вам нужно будет создать виртуальную среду для Python 3, и даже если вы работаете в Python 3, создание виртуальной среды для этого учебника является хорошей практикой.

Создание виртуальной среды Python 3

Виртуальная среда Python — это изолированная среда, в которой вы можете устанавливать библиотеки и выполнять код. Можно создать множество различных виртуальных сред для работы с разными версиями библиотек Python и Python. Виртуальные среды полезны, потому что они гарантируют, что у вас установлены только необходимые библиотеки и вы не столкнетесь с конфликтами версий. Дополнительным преимуществом виртуальных сред является то, что вы можете передавать их другим, чтобы вы знали, что ваш код будет выполняться на другой машине.

Miniconda — это простой способ создания виртуальных сред, который легко установить в разных операционных системах. Вам следует загрузить Miniconda и следовать инструкциям для Windows, Mac или Linux в зависимости от вашей операционной системы.

После того, как вы загрузили и установили Miniconda для своей операционной системы, вы можете проверить правильность ее установки, открыв командную строку и набрав:

Если вы видите информацию о версии, подобную приведенной ниже, значит Miniconda установлена ​​правильно.

  Текущая установка conda:
               платформа: linux-64
          версия conda: 4.3.29
          ...
  

Мы будем использовать Miniconda для создания виртуальной среды Python 3 с именем bokeh-env для этого руководства. В командной строке введите следующее:

  conda create --name bokeh-env python = 3.6
  

Скажите «да», когда вам будет предложено установить новые пакеты.

Чтобы активировать виртуальную среду bokeh-env , команда немного отличается в зависимости от вашей операционной системы.

 Источник  активировать bokeh-env # Для Linux / MacOS
активировать bokeh-env # Для Windows
  

Теперь ваша командная строка должна показать, что вы находитесь в виртуальной среде bokeh-env .

Если вы хотите выйти из виртуальной среды, вы можете ввести команду, соответствующую вашей операционной системе.

  источник деактивировать # Для Linux / MacOS
деактивировать # Для Windows
  

Установка пакетов

В активированной виртуальной среде bokeh-env введите следующую команду, чтобы установить пакеты python для этого руководства.

  pip install pandas bokeh pyproj
  

Чтобы получить точные версии, использованные для написания этого руководства (примечание: это могут быть не самые последние версии каждого пакета python), вы можете передать следующие номера версий в pip .

  pip install pandas == 0.23.1 bokeh == 0.13.0 pyproj == 1.9.5.1
  

Примеры рабочего кода

Проще всего сначала создать отдельный каталог и сохранить в нем каждый пример кода как .py .Когда вы будете готовы запустить файл кода, перейдите в этот каталог в командной строке и убедитесь, что ваша виртуальная среда активирована. Помните, что вы всегда можете активировать среду с помощью следующей команды, соответствующей вашей операционной системе.

 Источник  активировать bokeh-env # Для Linux / MacOS
активировать bokeh-env # Для Windows
  

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

Блокнот Jupyter, содержащий код, используемый в этом руководстве, также доступен на тот случай, если вы предпочитаете работать с учебником без установки виртуальной среды.Вы можете узнать больше о Jupyter Notebook здесь. Если вы создали виртуальную среду с помощью Miniconda, как описано выше, вы можете установить Jupyter Notebook в среде, набрав conda install jupyter

Что такое боке?

Bokeh — это библиотека для создания интерактивных визуализаций данных в веб-браузере. Он предлагает краткий, понятный человеку синтаксис, который позволяет быстро представлять данные в эстетически приятной форме. Если вы раньше работали с визуализацией в Python, вероятно, вы использовали matplotlib.Стоит вкратце упомянуть, чем Bokeh отличается от matplotlib и когда одно может быть предпочтительнее другого.

Matplotlib существует с 2002 года и долгое время является стандартом визуализации данных Python. Bokeh появилось в 2013 году. Эта разница в возрасте означает, что Matplotlib созрел задолго до того, как был выпущен Bokeh; однако за короткий период времени боке достигло высокого уровня зрелости.

Предполагаемое использование matplotlib и Bokeh совершенно разное. Matplotlib создает статическую графику, которая полезна для быстрой и простой визуализации или для создания изображений качества публикации.Bokeh создает визуализации для отображения в Интернете (локально или встроенных в веб-страницу), и, что наиболее важно, визуализации должны быть высоко интерактивными. Matplotlib не предлагает ни одной из этих функций.

Если вы хотите визуально взаимодействовать с вашими данными в исследовательской манере или вы хотите распространять интерактивные визуальные данные среди веб-аудитории, Bokeh — это библиотека для вас! Если ваш главный интерес — создание окончательных визуализаций для публикации, возможно, лучше использовать matplotlib, хотя Bokeh действительно предлагает способ создания статической графики.

Имея в виду эти различия, по мере прохождения урока я буду подчеркивать интерактивные аспекты, которые делают Bokeh полезным для изучения и распространения исторических данных и отличают его от других библиотек, таких как matplotlib.

Ваш первый участок

Сначала создайте новый файл с именем my_first_plot.py в том же каталоге, что и wwii_thor.csv , а затем откройте его в текстовом редакторе. Мы будем добавлять строки в этот файл для запуска.

  #my_first_plot.ру
from bokeh.plotting import figure, output_file, show
  

Чтобы реализовать и использовать боке, мы сначала импортируем некоторые основы, которые нам нужны, из модуля bokeh.plotting .

Рисунок — это основной объект, который мы будем использовать для создания графиков. Рисунок обрабатывает стили графиков, включая заголовок, метки, оси и сетки, и предоставляет методы для добавления данных к графику. Функция output_file определяет способ визуализации визуализации (а именно, в файл html), а функция show будет вызываться, когда график будет готов для вывода. show сообщает Bokeh, что все данные добавлены на график и пора их рендерить.

  выходной_файл ('my_first_graph.html')
  

Bokeh рекомендует, чтобы output_file , которому мы передаем имя файла, вызывал в начале вашего скрипта сразу после импорта. Альтернативная функция вывода, о которой следует знать, — это output_notebook , которая используется для отображения графиков в строке в Jupyter Notebook. Чтобы узнать больше об установке и использовании записных книжек Jupyter, см. Документацию Jupyter.

  x = [1, 3, 5, 7]
y = [2, 4, 6, 8]
  

Далее мы создадим данные для построения графика. Данные в боке могут принимать разные формы, но в простейшем случае данные представляют собой просто список значений. Мы создаем один список для нашей оси x и один для нашей оси y.

При фиксированном формате вывода и данных мы можем создать экземпляр фигуры и добавить к нему данные.

  p = цифра ()

p.circle (x, y, размер = 10, цвет = 'красный', легенда = 'круг')
p.line (x, y, color = 'blue', legend = 'line')
п.треугольник (y, x, цвет = 'золото', размер = 10, легенда = 'треугольник')
  

p — это общее имя переменной для объекта фигура , поскольку фигура является типом графика.

После создания экземпляра фигуры мы вызываем методы круг , линия и треугольник для построения наших данных. Эти типы методов известны как метод глифов . Термин глиф в боке относится к линиям, кругам, полосам и другим формам, которые добавляются к графикам для отображения данных.

Если бы мы хотели, мы могли бы просто добавлять глифы к сюжету! Помимо символов круга , линии и треугольника , существует множество других, в том числе: звездочка , круг_кросс , круг_x , крест , ромб , алмаз_кросс инвертированный_треугольник , квадрат , квадрат_кросс , квадрат_x и x .

При вызове метода глифа, как минимум, мы должны передать данные, которые мы хотели бы построить, но часто мы можем добавлять аргументы стиля.Здесь мы устанавливаем размер, цвет и название легенды для каждого глифа.

  p.legend.click_policy = 'скрыть'
  

Мы также добавим наш первый фрагмент кода, который привносит в сюжет некоторую интерактивность. Установив click_policy в нашей легенде, пользователь теперь может щелкнуть каждую запись легенды (например, круг, линию, треугольник), чтобы показать / скрыть этот фрагмент данных! Для click_policy также можно установить mute вместо hide . Это отключит цвет этих данных при нажатии, а не полностью.

Вызов show и передача созданного экземпляра фигуры выведет результаты в наш html-файл. А теперь давайте запустим этот код!

В командной строке убедитесь, что вы находитесь в каталоге, в котором вы сохранили файл, а затем запустите файл с помощью команды python .

Построение одного символа

Откроется веб-браузер, показывающий html-файл с вашей визуализацией. Красные круги, синяя линия и золотые треугольники являются результатом вызовов нашего метода глифов.Щелчок по легенде в правом верхнем углу покажет / скроет каждый тип глифа. Обратите внимание, что Bokeh автоматически обработало создание линий сетки и меток.

Справа также отображается панель инструментов по умолчанию. Инструменты включают перетаскивание, масштабирование рамки, масштабирование колеса, сохранение, сброс и справку. Используя эти инструменты, пользователь может перемещаться по графику или увеличивать интересующие части данных. Поскольку это отдельная HTML-страница, которая включает ссылку на BokehJS, ее можно сразу передать коллеге для изучения или опубликовать в Интернете.

В предыдущем примере мы вручную создали два коротких списка Python для наших данных x и y. Что происходит, когда у вас есть реальные данные с десятками тысяч строк и десятками столбцов, хранящимися во внешнем формате? Pandas, широко используемая библиотека науки о данных, идеально подходит для этого типа данных и легко интегрируется с Bokeh для создания интерактивных визуализаций данных.

Pandas Обзор

В рамках этого урока я коснусь только основных функций Pandas, которые необходимы для создания наших визуализаций.«10 минут до Pandas» и «Уроки для новых пользователей Pandas» — отличное введение, которое я бы порекомендовал для расширения ваших знаний, выходящих за рамки тех основ, которые здесь затронуты.

Pandas быстро превратился в де-факто Python-библиотеку для рабочих процессов данных и науки о данных; интеграция с другими крупными библиотеками науки о данных и машинного обучения только способствовала росту популярности. Pandas предоставляет функциональные возможности для быстрого и эффективного чтения, записи и изменения наборов данных для анализа.Для этого Pandas предоставляет структуры данных, которые содержат данные разной размерности. DataFrame хранит двумерные данные в виде электронной таблицы со строками и столбцами. Именно через этот объект мы будем взаимодействовать с нашим набором данных THOR Второй мировой войны. Давайте сначала рассмотрим Pandas DataFrame , загрузив наши данные csv в один.

Загрузка данных в пандах

Для начала создайте новый файл с именем loading_data.py .

  #loading_data.ру
импортировать панд как pd

df = pd.read_csv ('Thor_wwii.csv')
печать (df)
  

Мы начинаем с импорта библиотеки Pandas, затем вызываем read_csv () и передаем ей имя файла. Обратите внимание, что библиотека Pandas имеет псевдоним pd . Этот псевдоним является условием, принятым в официальной документации Pandas, и широко используется сообществом Pandas. По этой причине я буду использовать псевдоним pd на протяжении всего руководства.

В этом коде read_csv создает DataFrame , который содержит строки / столбцы наших данных csv.По соглашению, имя переменной df используется для представления загруженного фрейма данных в учебниках и базовых примерах кода. Существует множество других методов чтения форматов данных, отличных от csv в Pandas, таких как JSON, таблицы SQL, файлы Excel и HTML.

При запуске этого кода print (df) выведет сокращенное представление загруженных данных.

  MSNDATE THEATER COUNTRY_FLYING_MISSION ... TONS_IC TONS_FRAG TOTAL_TONS
30.03.1941 ЕТО ВЕЛИКОБРИТАНИЯ... 0,0 0,0 0,0
24.11.1940 ЕТО ВЕЛИКОБРИТАНИЯ ... 0,0 0,0 0,0
04.12.1940 ВЕЛИКОБРИТАНИЯ ЕТО ... 0,0 0,0 0,0
31.12.1940 ЕТО ВЕЛИКОБРИТАНИЯ ... 0,0 0,0 0,0

[178281 строка x 19 столбцов]
  

Это показывает, что у нас есть 178 281 запись миссий с 19 столбцами на запись. Чтобы увидеть, что представляют собой 19 столбцов полностью, мы можем получить доступ к объекту столбцов фрейма данных, заменив print (df) в приведенном выше коде на:

Результат должен выглядеть так:

  [MSNDATE, THEATER, COUNTRY_FLYING_MISSION, NAF, UNIT_ID, AIRCRAFT_NAME, AC_ATTACKING, TAKEOFF_BASE, TAKEOFF_COUNTRY, TAKEOFF_COUNTRY, TAKEOFF_COUNTRY, TAKEOFF TAKEOFF, TAKEOFF TAKEOFF, TAKEOFF , 'TGT_LOCATION', 'TGT_LATITUDE', 'TGT_LONGITUDE', 'TONS_HE', 'TONS_IC', 'TONS_FRAG', 'TOTAL_TONS']
  

Некоторые из этих названий столбцов говорят сами за себя, но стоит отметить следующее: MSNDATE (дата миссии), NAF (пронумерованные ВВС, ответственные за миссию), AC_ATTACKING (количество самолетов), TONS_HE (фугасные), TONS_IC (зажигательные устройств), TONS_FRAG (осколочные бомбы).

Когда дело доходит до доступа к данным в DataFrame , в этом руководстве мы используем один базовый подход: индексирование. Здесь, чтобы получить доступ к одному столбцу, мы передаем строку в индексатор нашего фрейма данных: например, df ['MSNDATE'] . Чтобы получить доступ к нескольким столбцам, мы передаем список имен в индексатор нашего фрейма данных: например, df [['MSNDATE', 'THEATER']] .

Столбец Боке Источник данных

Теперь, когда мы узнали, как создать график боке и как загружать табличные данные в Pandas, пришло время узнать, как связать Pandas ' DataFrame с визуализацией Bokeh.Эту интеграцию обеспечивает объект Bokeh ColumnDataSource .

Конструктор объекта принимает Pandas DataFrame в качестве аргумента. После создания ColumnDataSource может быть передан в методы глифов через параметр источника , а другие параметры, такие как наши данные x и y, могут затем ссылаться на имена столбцов в нашем источнике. Давайте рассмотрим это на примере.

Используя наш набор данных THOR, мы создадим диаграмму разброса количества атакующих самолетов в зависимости от количества сброшенных тонн боеприпасов.Для этого мы будем использовать новый файл с именем column_datasource.py . Мы также воспользуемся этой возможностью, чтобы узнать об интерактивной функции наведения курсора Bokeh.

  # column_datasource.py
импортировать панд как pd
from bokeh.plotting import figure, output_file, show
из bokeh.models импортировать ColumnDataSource
из bokeh.models.tools импортировать HoverTool

выходной_файл ('columndatasource_example.html')

df = pd.read_csv ('Thor_wwii.csv')
  

Здесь мы импортируем панды, объект figure и основные функции из bokeh.построение графика и объекта ColumnDataSource из bokeh.models . Мы также собираемся расширить наши знания о взаимодействиях в этом примере, добавив функцию наведения, которой способствует HoverTool

Затем мы сразу же устанавливаем наш выходной файл в соответствии с рекомендациями Bokeh. Наконец, мы вызываем метод Pandas read_csv , чтобы загрузить наш csv в DataFrame .

  образец = df.sample (50)
источник = ColumnDataSource (образец)
  

Поскольку мы не хотим отображать все 170 000+ строк на нашей диаграмме рассеяния (для генерации которой потребовалось бы больше времени на обработку, и это могло бы создать запутанный график из-за объема перекрывающихся данных), мы случайным образом выбираем 50 строк, используя фрейма данных. образец метод.Затем мы передаем этот образец в конструктор ColumnDataSource и сохраняем его в переменной с именем source .

  p = цифра ()
p.circle (x = 'TOTAL_TONS', y = 'AC_ATTACKING',
         source = источник,
         size = 10, color = 'green')
  

Затем мы создаем наш объект figure и вызываем метод глифа circle для построения наших данных. Здесь в игру вступает исходная переменная , которая содержит наш ColumnDataSource .Он передается как наш аргумент источника в метод глифа, а имена столбцов, содержащие количество атакующих самолетов (AC_ATTACKING) и тонны сброшенных боеприпасов (TOTAL_TONS), передаются как наши аргументы x и y .

Интересно, что когда мы используем ColumnDataSource , мы не ограничиваемся только использованием имен столбцов для параметров x и y . Мы также можем передать имя столбца для других параметров, таких как размер , line_color или fill_color .Это позволяет определять параметры стиля по столбцам в самом источнике данных! Если вы хотите увидеть это в действии, в приведенном выше коде измените size = 10 на size = 'TONS_HE' . Размер каждой точки будет отражать тонны использованных взрывчатых веществ.

На протяжении всего урока я часто передаю аргументы по имени, тогда как их можно было бы более кратко передать по позиции. На мой взгляд, это помогает читателю отслеживать, какие аргументы передаются

Затем мы добавляем заголовок и маркируем наши оси.

  p.title.text = 'Атакующий самолет и сброшены боеприпасы'
p.xaxis.axis_label = 'Сброшено тонны боеприпасов'
p.yaxis.axis_label = 'Количество атакующих самолетов'
  

На этом этапе мы также можем узнать немного больше о сильной интерактивной настраиваемой природе графиков боке. В нашем первом графике Bokeh мы видели панель инструментов Bokeh по умолчанию, но Bokeh позволяет нам настраивать наш график, добавляя к нему новые интерактивные инструменты.

  hover = HoverTool ()
парить.tooltips = [
    ('Дата атаки', '@MSNDATE'),
    ('Атакующий самолет', '@AC_ATTACKING'),
    ('Тонны боеприпасов', '@TOTAL_TONS'),
    ("Тип самолета", "@AIRCRAFT_NAME")
]

p.add_tools (при наведении)

показать (p)
  

Bokeh поддерживает множество инструментов построения графиков, но я представляю здесь HoverTool , потому что он особенно полезен для исследования данных и взаимодействия. HoverTool позволяет вам установить свойство tooltips , которое принимает список кортежей. Первая часть кортежа — это отображаемое имя, а вторая — имя столбца из вашего ColumnDataSource с префиксом @ .Создав экземпляр этого инструмента, мы добавляем его на график с помощью метода add_tool . Посмотрим, как это выглядит через минуту.

Наконец, мы обязательно добавили линию, чтобы показать график. Теперь мы можем запустить column_datasource.py и взаимодействовать с нашими данными в браузере.

Построение с использованием ColumnDataSource и других параметров стиля

Обратите внимание, что, поскольку мы произвольно выбираем данные, наш график будет выглядеть по-разному каждый раз, когда мы запускаем код.

Вверху и по осям графика мы видим добавленные метки.На панели инструментов также появился новый инструмент. Это добавленный нами инструмент наведения. Чтобы увидеть это в действии, наведите указатель мыши на любую точку данных на диаграмме рассеяния. Появится окно, показывающее столбцы, которые мы установили в нашей подсказке свойство !

Перед тем, как перейти к следующему разделу урока, попробуйте вернуться к приведенному выше примеру и добавить / удалить другие переменные и изменить отображаемые имена.

В предыдущем примере мы построили количественные данные. Однако часто мы хотим отображать категориальные данные.Категориальные данные, в отличие от количественных, — это данные, которые можно разделить на группы, но не обязательно иметь числовой аспект. Например, если ваш рост числовой, то цвет волос — категоричный. С точки зрения нашего набора данных, такие функции, как атакующая страна, содержат категориальные данные, а такие функции, как вес боеприпасов, содержат количественные данные.

В этом разделе мы узнаем, как использовать категориальные данные в качестве значений оси x в боке и как использовать метод глифов vbar для создания вертикальной гистограммы (метод глифов hbar работает аналогично для создания горизонтальная гистограмма).Кроме того, мы узнаем о подготовке категориальных данных в Pandas путем группировки данных. Кроме того, мы расширим наши знания о стилях боке и инструменте наведения.

Чтобы обработать эту информацию, мы создадим гистограмму, которая покажет общее количество тонн боеприпасов, сброшенных каждой страной, указанной в нашем CSV.

Мы начинаем с создания нового файла с именем munitions_by_country.py и добавления исходного кода.

  # munitions_by_country.py
импортировать панд как pd
из боке.построение рисунка импорта, output_file, show
из bokeh.models импортировать ColumnDataSource
из bokeh.models.tools импортировать HoverTool

из bokeh.palettes import Spectral5
из bokeh.transform import factor_cmap
выходной_файл ('munitions_by_country.html')

df = pd.read_csv ('Thor_wwii.csv')
  

Сначала мы импортируем библиотеку Pandas и основные элементы из Bokeh (т.е. рисунок , выходной_файл , показывает и ColumnDataSource ). Мы также делаем два новых импорта: Spectral5 — это готовая пятицветная палитра, одна из многих готовых цветовых палитр Bokeh, и factor_cmap — вспомогательный метод для сопоставления цветов с столбиками на гистограммах.

После импорта мы устанавливаем наш output_file и загружаем файл thor_wwii.csv в DataFrame .

Теперь нам нужно перейти от 170 000+ записей отдельных миссий к одной записи для каждой атакующей страны с общим количеством сброшенных боеприпасов.

  grouped = df.groupby ('COUNTRY_FLYING_MISSION') ['TOTAL_TONS', 'TONS_HE', 'TONS_IC', 'TONS_FRAG']. Sum ()
  

Pandas позволяет нам сделать это в одной строке кода, используя метод groupby dataframe.Этот метод принимает столбец, по которому можно группировать данные, и один или несколько методов агрегирования, которые сообщают Pandas, как сгруппировать данные вместе. Результатом является новый фрейм данных.

Давайте возьмем это по кусочку за раз. Группа ('COUNTRY_FLYING_MISSION') устанавливает столбец, по которому мы группируемся. Другими словами, это говорит о том, что мы хотим, чтобы в результирующем фрейме данных была одна строка для каждой уникальной записи в столбце COUNTRY_FLYING_MISSION . Поскольку нас не интересует агрегирование всех 19 столбцов в фрейме данных, мы выбираем только тонны столбцов боеприпасов с помощью индексатора, ['TOTAL_TONS', 'TONS_HE', 'TONS_IC', 'TONS_FRAG'] .Наконец, мы используем метод суммы , чтобы Pandas знал, как агрегировать все разные строки. Также существуют другие методы агрегирования, такие как count , mean , max и min .

Если вы выполните команду print (grouped) , вы увидите, что Pandas сгруппировал по пяти уникальным странам в нашем наборе данных и суммировал общее количество тонн, потерянных каждой из них. Вы также можете видеть, что в наборе данных есть некоторые проблемы: Южная Африка и Новая Зеландия сбросили больше взрывчатых веществ, чем столбец с общим количеством тонн.Подобные проблемы типичны для больших наборов данных, созданных вручную, и это отличное напоминание о том, почему так важно исследовать и визуализировать свои данные перед созданием результатов исследования.

  ВСЕГО_ТОНН ТОНН_ТОНН_ИК_ТОНН_ВАРКА
COUNTRY_FLYING_MISSION
АВСТРАЛИЯ 479,89 453,90 13,600 18,64
ВЕЛИКОБРИТАНИЯ 1112598,95 868277,23 209036,158 1208,00
НОВАЯ ЗЕЛАНДИЯ 2629,06 4263,70 166,500 0.00
ЮЖНАЯ АФРИКА 11,69 15,00 0,000 0,00
США 1625487.68 1297955.65 205288.200 127655.98

  

Чтобы отобразить эти данные, давайте преобразуем их в килотонны, разделив их на 1000.

Это удобство, которое мы продолжим использовать в будущих примерах.

  источник = ColumnDataSource (сгруппированы)
country = source.data ['COUNTRY_FLYING_MISSION']. tolist ()
p = цифра (x_range = страны)
  

Теперь нам нужно создать ColumnDataSource из наших сгруппированных данных и создать фигуру .Поскольку наша ось x будет перечислять пять стран (а не числовые данные), нам нужно указать фигуре, как обращаться с осью x.

Для этого мы создаем список стран из нашего исходного объекта, используя source.data и имя столбца в качестве ключа. Затем список стран передается как x_range в наш конструктор figure . Поскольку это список текстовых данных, фигура знает, что ось x является категориальной, а также знает, какие возможные значения может принимать наш диапазон x (т.е. АВСТРАЛИЯ, ВЕЛИКОБРИТАНИЯ и др.).

  color_map = factor_cmap (field_name = 'COUNTRY_FLYING_MISSION',
                    палитра = Spectral5, факторы = страны)

p.vbar (x = 'COUNTRY_FLYING_MISSION', top = 'TOTAL_TONS', source = source, width = 0.70, color = color_map)

p.title.text = 'Боеприпасы, сброшенные союзной страной'
p.xaxis.axis_label = 'Страна'
p.yaxis.axis_label = 'Килотонны боеприпасов'
  

Теперь мы строим наши данные в виде полос индивидуального цвета и добавляем базовые метки. Чтобы раскрасить наши полосы, мы используем вспомогательную функцию factor_cmap .Это создает специальную цветовую карту, которая соответствует индивидуальному цвету для каждой категории (то есть то, что Боке называет коэффициентом ). Затем цветовая карта передается в качестве аргумента цвета нашему методу глифов vbar .

Для данных в нашем методе глифов мы передаем источник и снова ссылаемся на имена столбцов. Однако вместо использования параметра y метод vbar принимает параметр top . В равной степени можно указать нижний параметр , но, если он не указан, его значение по умолчанию равно 0.

  hover = HoverTool ()
hover.tooltips = [
    («Итоги», «@TONS_HE High Explosive / @TONS_IC Incendiary / @TONS_FRAG Fragmentation»)]

hover.mode = 'vline'

p.add_tools (при наведении)

показать (p)
  

Мы снова добавляем инструмент наведения, но теперь мы видим, что можем использовать несколько переменных данных в одной строке и добавлять свой собственный текст, чтобы всплывающее окно отображало килотонны каждого типа взрывчатого вещества. hover.mode новый. Для инструмента наведения существует три режима: мышь , vline и hline .Они сообщают инструменту наведения, когда показывать всплывающее окно. Мышь — значение по умолчанию и показывает всплывающее окно, когда находится прямо над глифом. vline и hline сообщают всплывающему окну, чтобы показать, когда вертикальная или горизонтальная линия пересекает глиф. При установке здесь vline , каждый раз, когда ваша мышь проходит через воображаемую вертикальную линию, идущую от каждой полосы, будет отображаться всплывающее окно.

Гистограмма с категориальными данными и раскраской

Если у вас есть возможность, стоит изучить цветовые палитры Боке.В приведенном выше примере попробуйте переписать код, чтобы использовать что-то другое, кроме Spectral5 , например Inferno5 или RdGy5 . Чтобы сделать еще один шаг вперед, вы можете попробовать свои силы в использовании встроенных палитр в любом примере, в котором используется цвет.

Поскольку предыдущий график показывает, что США и Великобритания составляют подавляющее большинство бомбардировок, теперь мы сосредоточимся на этих двух странах и узнаем, как составить гистограмму с накоплением, которая показывает типы боеприпасов, которые использовала каждая страна.

Мы запустим новый файл под названием munitions_by_country_stacked.py

  # munitions_by_country_stacked.py
импортировать панд как pd
from bokeh.plotting import figure, output_file, show
из bokeh.models импортировать ColumnDataSource
из bokeh.palettes import Spectral3
выходной_файл ('types_of_munitions.html')

df = pd.read_csv ('Thor_wwii.csv')
  

В дополнение к нашему стандартному импорту, на этот раз мы используем трехцветную спектральную палитру, по одному цвету для каждого типа взрывчатого вещества (High Explosive, Incendiary и Fragmentation).

  filter = df ['COUNTRY_FLYING_MISSION']. Isin (('США', 'ВЕЛИКОБРИТАНИЯ'))
df = df [фильтр]
  

Поскольку ось X снова категориальна, нам нужно сгруппировать и агрегировать наши данные. Однако на этот раз нам нужно исключить все записи, в которых нет COUNTRY_FLYING_MISSION со значением GREAT BRITAIN или USA. Для этого мы фильтруем наш фрейм данных.

Для каждой строки в df функция isin проверяет, имеет ли COUNTRY_FLYING_MISSION значение USA или GREAT BRITAIN.Если это так, соответствующее значение в переменной filter равно True , а если нет, то значение будет False

При применении к нашему фрейму данных через df [фильтр] создается новый фрейм данных, в котором сохраняются строки со значением True , а строки со значением False отбрасываются. После применения фильтра выполнение df.shape показывает, что от исходных 178 281 строк осталось 125 526 строк.

  сгруппировано = df.groupby ('COUNTRY_FLYING_MISSION') ['TONS_IC', 'TONS_FRAG', 'TONS_HE']. sum ()

# снова перевести тонны в килотонны
grouped = сгруппировано / 1000
  

Теперь, когда мы уменьшили фрейм данных, чтобы показать только записи для США и Великобритании, мы группируем наши данные с groupby и объединяем три столбца, которые содержат типы бомб с суммой .

  источник = ColumnDataSource (сгруппированы)
country = source.data ['COUNTRY_FLYING_MISSION']. tolist ()
p = цифра (x_range = страны)
  

Как и в предыдущем примере, мы создаем исходный объект из наших сгруппированных данных и убеждаемся, что наша фигура использует категориальные данные для оси x, установив x_range в список стран.

  p.vbar_stack (stackers = ['TONS_HE', 'TONS_FRAG', 'TONS_IC'],
             x = 'COUNTRY_FLYING_MISSION', источник = источник,
             legend = ['High Explosive', 'Fragmentation', 'Incendiary'],
             ширина = 0,5, цвет = Spectral3)
  

Чтобы создать столбчатую диаграмму с накоплением, мы вызываем глиф-метод vbar_stack . Вместо того, чтобы передавать одно имя столбца в параметр y , мы вместо этого передаем список имен столбцов как укладчики . Порядок в этом списке определяет порядок, в котором столбцы будут располагаться снизу вверх (после того, как вы проработаете этот пример, попробуйте изменить порядок столбцов, чтобы увидеть, что произойдет).Легенда Аргумент предоставляет текст для каждого укладчика, а палитра Spectral3 предоставляет цвета для каждого укладчика.

  p.title.text = 'Типы боеприпасов, сброшенных союзными странами'
p.legend.location = 'top_left'

p.xaxis.axis_label = 'Страна'
p.xgrid.grid_line_color = None # удалить линии сетки x

p.yaxis.axis_label = 'Килотонны боеприпасов'

показать (p)
  

Мы добавляем базовую стилизацию и маркировку, а затем выводим сюжет.

Гистограмма с накоплением категориальных данных и раскраски

Давайте теперь немного подробнее рассмотрим использование зажигательных и осколочных взрывчатых веществ, посмотрев, есть ли какие-либо тенденции в их использовании с течением времени по сравнению с общим количеством сброшенных боеприпасов.Поскольку у вас было некоторое время, чтобы привыкнуть к синтаксису Боке, давайте сразу рассмотрим полный пример кода в новом файле с именем my_first_timeseries.py .

  # my_first_timeseries.py
импортировать панд как pd
from bokeh.plotting import figure, output_file, show
из bokeh.models импортировать ColumnDataSource
из bokeh.palettes import Spectral3
выходной_файл ('simple_timeseries_plot.html')

df = pd.read_csv ('Thor_wwii.csv')

# убедитесь, что MSNDATE - это формат даты и времени
df ['MSNDATE'] = pd.to_datetime (df ['MSNDATE'], формат = '% m /% d /% Y')

grouped = df.groupby ('MSNDATE') ['TOTAL_TONS', 'TONS_IC', 'TONS_FRAG']. sum ()
grouped = сгруппировано / 1000

источник = ColumnDataSource (сгруппированы)

p = цифра (x_axis_type = 'datetime')

p.line (x = 'MSNDATE', y = 'TOTAL_TONS', line_width = 2, source = source, legend = 'All Munitions')
p.line (x = 'MSNDATE', y = 'TONS_FRAG', line_width = 2, source = source, color = Spectral3 [1], legend = 'Fragmentation')
p.line (x = 'MSNDATE', y = 'TONS_IC', line_width = 2, source = source, color = Spectral3 [2], legend = 'Incendiary')

p.yaxis.axis_label = 'Килотонны сброшенных боеприпасов'

показать (p)
  

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

Во-первых, оператор df ['MSNDATE'] = pd.to_datetime (df ['MSNDATE'], format = '% m /% d /% Y') гарантирует, что наш столбец MSNDATE является датой и временем. Это важно, потому что часто данные, загруженные из файла csv, не будут правильно набраны как datetime. Предоставление аргумента формата не требуется, но это значительно ускоряет процесс.

Во-вторых, мы передаем аргумент x_axis_type = 'datetime' нашему конструктору рисунка, чтобы сообщить ему, что наши данные x будут datetime.В остальном Bokeh без проблем работает с данными времени, как и любой другой тип числовых данных!

Однако, глядя на вывод, вы можете заметить серьезную проблему.

Базовый график временных рядов

Эти данные непостоянны и трудны для чтения, потому что они слишком детализированы для наших нужд. Наличие ежедневных данных в течение пяти лет - это здорово, но их отображение на графике скрывает тенденции в данных. Для успешного построения временных рядов данных и поиска долгосрочных тенденций нам нужен способ изменить временную шкалу, на которую мы смотрим, чтобы, например, мы могли отображать данные, суммированные по неделям, месяцам или годам.

К счастью, Pandas предлагает быстрый и простой способ сделать это. Изменив одну строку кода в приведенном выше примере, мы можем пересчитать данных нашего временного ряда в любую допустимую единицу времени.

Передискретизация данных временного ряда

Передискретизация данных временных рядов может включать либо повышающую дискретизацию (создание большего количества записей), либо понижающую дискретизацию (создание меньшего количества записей). Например, список дневных температур может быть увеличен до списка часовых температур или уменьшен до списка недельных температур.В этом руководстве мы будем использовать только понижающую дискретизацию, но повышающая дискретизация очень полезна, когда вы пытаетесь сопоставить периодически измеряемый набор данных с тем, который измеряется более периодически.

Для повторной выборки наших данных мы используем объект Pandas Grouper , которому мы передаем имя столбца, содержащее наши даты и время, и код, представляющий желаемую частоту повторной выборки. В случае с нашими данными, оператор pd.Grouper (key = 'MSNDATE', freq = 'M') будет использоваться для повторной выборки нашего столбца MSNDATE на M onth.Мы могли бы в равной степени пересчитать на Вт eek, Y ухо, H наше и так далее. Эти обозначения частоты также могут быть предварены числами, так что, например, freq = '2W' выполняет повторную выборку с двухнедельными интервалами!

Чтобы завершить процесс повторной выборки и построения графика данных, мы передаем вышеупомянутый объект Grouper нашей функции groupby вместо необработанного имени столбца. Оператор groupby из предыдущего примера кода теперь должен выглядеть так:

  сгруппировано = df.groupby (pd.Grouper (key = 'MSNDATE', freq = 'M')) ['TOTAL_TONS', 'TONS_IC', 'TONS_FRAG']. sum ()
  

Повторный запуск приведенного выше примера кода даст более четкий график с очевидными тенденциями. На графике теперь показаны четыре достопримечательности:

  • Во-первых, весной 1944 и 1945 годов масштабы бомбардировок союзников стали более интенсивными.
  • Во-вторых, летом 1945 года наблюдается меньший всплеск бомбардировок Японии после капитуляции Германии.
  • В-третьих, появляются четыре шипа в использовании зажигательного оружия, которые можно исследовать дополнительно.
  • В-четвертых, и, наконец, есть несколько небольших всплесков использования осколочных бомб, применение которых затем прекращается после капитуляции Германии.

График временного ряда с данными, пересчитанными в месяцы

Аннотирование тенденций на графиках

Давайте теперь более внимательно рассмотрим бомбардировки Европы в 1944 и 1945 годах, чтобы увидеть, какие тенденции существуют в отношении осколочных и зажигательных боеприпасов.Мы также укажем на некоторые из этих тенденций на нашем графике с аннотациями. Для этого мы отфильтруем наш набор данных, чтобы мы работали только с бомбардировками в Европейском театре военных действий (ETO), пересчитаем данные с интервалом в один месяц ( freq = 'M' ), а затем построим график результатов. таким же образом, как и раньше.

  # annotating_trends.py
импортировать панд как pd
from bokeh.plotting import figure, output_file, show
из bokeh.models импортировать ColumnDataSource
from datetime import datetime
из боке.палитры импортные Spectral3
выходной_файл ('eto_operations.html')

df = pd.read_csv ('Thor_wwii.csv')

#filter для Европейского театра военных действий
filter = df ['ТЕАТР'] == 'ETO'
df = df [фильтр]

df ['MSNDATE'] = pd.to_datetime (df ['MSNDATE'], формат = '% m /% d /% Y')
group = df.groupby (pd.Grouper (key = 'MSNDATE', freq = 'M')) ['TOTAL_TONS', 'TONS_IC', 'TONS_FRAG']. sum ()
группа = группа / 1000

источник = ColumnDataSource (группа)

p = цифра (x_axis_type = "datetime")

p.line (x = 'MSNDATE', y = 'TOTAL_TONS', line_width = 2, source = source, legend = 'All Munitions')
п.строка (x = 'MSNDATE', y = 'TONS_FRAG', line_width = 2, source = source, color = Spectral3 [1], legend = 'Fragmentation')
p.line (x = 'MSNDATE', y = 'TONS_IC', line_width = 2, source = source, color = Spectral3 [2], legend = 'Incendiary')

p.title.text = 'Европейский театр операций'

p.yaxis.axis_label = 'Килотонны сброшенных боеприпасов'

показать (p)
  

График временного ряда ETO с данными, пересчитанными в месяцы

В данных ETO обнаруживается несколько закономерностей. Сначала мы видим очень явную эскалацию общих бомбардировок до 6 июня 1944 года и заметный спад зимой 1944/1945 года.Зажигательные боеприпасы имеют три шипа и подтверждают, что четвертый шип, показанный в предыдущем примере, был направлен на бомбардировку Японии после капитуляции Германии. Образец осколочных бомб труднее читать, но теперь ясно, что они серьезно использовались в Европейском театре только после дня «Д».

Попробуйте свои силы в повторной выборке этих данных, используя любую временную частоту Панд, чтобы увидеть, какие другие тенденции могут проявиться. Помните, что перед этими частотами также можно указывать числа (например,грамм. если бы вы работали с историческими данными фондового рынка, 2-й квартал предоставил бы вам данные за два квартала!)

Поскольку мы установили, что 6 июня 1944 года и зима 1944/1945 годов знаменуют собой изменения в схемах бомбардировок в ETO, давайте выделим эти тенденции с помощью аннотаций Боке.

Для этого мы создадим BoxAnnotation , а затем добавим их к нашей фигуре перед ее отображением. Во-первых, нам нужно добавить в наш код дополнительный оператор импорта.

  из боке.модели импортируют BoxAnnotation
  

Чтобы создать коробку, нам сначала нужно определить ее координаты. Координаты аннотаций Bokeh могут быть либо абсолютными (т. Е. Позиционироваться с использованием экранных единиц), то есть они всегда остаются в одном месте, либо они могут быть расположены относительно данных. Все наши аннотации будут позиционироваться с использованием координат данных.

  box_left = pd.to_datetime ('6-6-1944')
box_right = pd.to_datetime ('16-12-1944 ')
  

Слева от поля будет 6 июня 1944 года (день «Д»), а справа от поля мы выберем первый день битвы при Арденнах: 16 декабря 1944 года.В этом случае даты следуют формату «месяц-день-год», но to_datetime также работает с форматами «сначала день» и «год».

Мы передаем эти координаты в конструктор BoxAnnotation вместе с некоторыми аргументами стиля. Затем мы добавляем его к нашему рисунку с помощью метода add_layout () .

  box = BoxAnnotation (left = box_left, right = box_right,
                    line_width = 1, line_color = 'черный', line_dash = 'пунктирный',
                    fill_alpha = 0.2, fill_color = 'оранжевый')

p.add_layout (поле)
  

График временного ряда ETO с добавленными аннотациями

Попробуйте создать аналогичный сюжет для Тихоокеанского театра военных действий (PTO). Аннотируйте вторжение в Иводзиму (19 февраля 1945 г.) и объявление Японии о капитуляции (15 августа 1945 г.).

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

Bokeh предоставляет встроенных поставщиков плитки, которые визуализируют базовые карты мира.Они содержатся в модуле bokeh.tile_providers . В этом примере мы будем использовать службу плиток CartoDB (CARTODBPOSITRON).

Мы также будем использовать функции, импортированные из библиотеки pyproj . Поскольку наши координаты хранятся как широта / долгота, мы определим специальную функцию для их преобразования перед отображением. Обратите внимание, что хотя Bokeh нейтрально к системе координат, для отображения используется проекция Web Mercator, стандарт, применяемый поставщиками веб-листов.Тема систем координат и проекций выходит за рамки этого руководства, но заинтересованный читатель найдет множество полезных веб-ресурсов по этим темам.

  # target_locations.py
импортировать панд как pd
from bokeh.plotting import figure, output_file, show
из bokeh.models импортировать ColumnDataSource, Range1d
из bokeh.layouts импортировать макет
из bokeh.palettes import Spectral3
из bokeh.tile_providers импортировать CARTODBPOSITRON
из pyproj import Proj, преобразовать
output_file ('маппирование_назначений.html ')

#helper функция для преобразования широты / долготы в восток / север для картографии
# это зависит от функций из библиотеки pyproj
def LongLat_to_EN (длинная, широта):
    пытаться:
      восток, север = преобразовать (
        Proj (init = 'epsg: 4326'), Proj (init = 'epsg: 3857'), long, lat)
      вернуться на восток, на север
    Кроме:
      return None, None

df = pd.read_csv ('Thor_wwii.csv')
#helper преобразовать все широты и долготы в webmercator и сохранить в новом столбце
df ['E'], df ['N'] = zip (* df.apply (lambda x: LongLat_to_EN (x ['TGT_LONGITUDE'], x ['TGT_LATITUDE']), axis = 1))
  

Определены шаблонный импорт и наша функция преобразования.Затем мы загружаем наши данные и применяем нашу функцию преобразования для создания новых столбцов E и N, в которых хранятся наши восточные и северные координаты Web Mercator.

  grouped = df.groupby (['E', 'N']) ['TONS_IC',
'TONS_FRAG']. Sum (). Reset_index ()

filter = grouped ['TONS_FRAG']! = 0
grouped = сгруппировано [фильтр]

источник = ColumnDataSource (сгруппированы)
  

Поскольку одна цель может появляться в нескольких записях, нам нужно сгруппировать данные по E и N, чтобы получить уникальные целевые местоположения. В противном случае мы бы отображали одну и ту же цель каждый раз, когда она появляется в записи.

Функция reset_index , применяемая после агрегирования, здесь нова. По умолчанию, когда Pandas группирует эти два столбца, он делает E и N индексом для каждой строки в новом фрейме данных. Поскольку мы просто хотим, чтобы E и N оставались обычными столбцами для сопоставления, мы вызываем reset_index .

  осталось = -2150000
справа = 18000000
дно = -5300000
top = 11000000

p = цифра (x_range = Range1d (слева, справа), y_range = Range1d (снизу, вверх))
  

Чтобы установить границы для нашей карты, мы установим минимальное и максимальное значение для нашего графика x_range и y_range .Мы используем объект Range1D , который представляет ограниченные одномерные данные в боке.

  p.add_tile (CARTODBPOSITRON)
p.circle (x = 'E', y = 'N', source = source, line_color = 'gray', fill_color = 'yellow')

p.axis.visible = Ложь

показать (p)
  

Наконец, мы вызываем add_tile и передаем импортированного поставщика плитки. Затем мы используем методы глифов, как и в любом другом сюжете. Здесь мы называем круг кругом и передаем столбцы восточного и северного направления в качестве данных x и y.

Карта целевых локаций

Определив, какие цели в Европе и Азии подверглись бомбардировке осколочными бомбами, теперь мы можем приступить к более детальному изучению схем разрушения. В приведенном выше коде мы также суммировали зажигательные бомбы. Попробуйте изменить код, чтобы создать карту этих целей.

Сила

Bokeh как инструмента визуализации заключается в его способности отображать различные типы данных в интерактивном и удобном для Интернета виде. В этом руководстве только поверхностные возможности возможностей Bokeh, и читателю предлагается глубже погрузиться в работу библиотеки.Отличное место для начала - галерея боке, где вы можете увидеть различные визуализации и решить, как вы можете применить эти методы к своим собственным данным. Если вы более склонны углубляться в дальнейшие примеры кода, онлайн-блокнот Bokeh - отличное место для начала!

Боке - Грамматика

Боке - японское слово. Это заимствованное слово. Ссуды и фразы ссуды - это термины, взятые из других языков и используемые как английские слова и фразы.Другой термин для заимствования - заимствованное слово. Заимствованные слова и фразы заимствования переходят в английский язык, когда англоговорящие люди вступают в контакт с другими языками и культурами. Иностранное слово превращается в заимствованное, когда оно принимается в лексиконе среднестатистического англоговорящего человека, а не только англоговорящего человека, который соприкасается с исходным языком и культурой. Мы рассмотрим определение слова боке, точного происхождения и некоторые примеры его использования в предложениях.

Боке - это фотографический термин, который описывает размытые, расфокусированные точки на светлых участках фотографии. Этот тип фотографической композиции стал более популярным с появлением редактирования изображений в приложениях для фотографий на мобильных устройствах. Чаще всего фотография с эффектом боке визуализирует удаленные части фотографии с размытым и мягким фокусом. Это размытие делает объект, обычно на переднем плане, фокусом. Наличие одной резкой, твердой черты служит контрастом мечтательному размытому фону, привлекает внимание к этой единственной особенности. Bokeh Фотография может бросаться в глаза при съемке портрета. При съемке bokeh с помощью объектива фотоаппарата фотограф должен обращать внимание на диафрагму, выдержку и глубину резкости, размывая части композиции, находящиеся дальше от камеры. Фотография с боке обычно подразумевает малую глубину резкости. Темная комната по большей части отошла на второй план, а цифровая фотография и возможность выполнять редактирование в таких программах, как Photoshop, сделали технику боке доступной для обычного человека.В Интернете есть множество учебных пособий и советов по фотографиям. Термин боке заимствован из японского языка, где слово передается как бокэ. На японском языке bo-ke означает дымку или размытость, а также используется для обозначения мозгового тумана старости или старости. Этот термин появился в английском языке в 1990-х годах. Майк Джонстон, редактор журнала Photo Techniques в 1997 году, предложил написание, которое используется сегодня, чтобы способствовать правильному произношению этого термина. Боке произносится как БО-кай.

Примеры

Камера предлагает такие функции, как оптимизатор сцены, обнаружение дефектов, живую фокусировку с фильтрами боке, панораму, суперзамедленную съемку, смайлики AR и гиперлапс. (The Times India)

Я все еще могу искренне рекомендовать телефон Huawei людям, которые специализируются на фотографии, потому что он дает отличное боке, которое размывает фон кадра, а также снимает быстро движущиеся фотографии и видео при слабом освещении. (The Bangkok Post)

Но были случаи, когда камера неправильно очерчивала края объекта, пытаясь размыть фон для эффекта боке.(The Straits Times)

Боке сложно имитировать в Photoshop, потому что истинное размытие объектива зависит от многих факторов, включая фокусное расстояние объектива, форму и размер диафрагмы, а также расстояние от объекта. (Digital Trends Magazine)

С его задней визуализацией глубины вы можете делать изображения профессионального стиля, используя выбираемое размытие боке, которое также можно редактировать после того, как снимок сделан.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *