Красивые графики в ggplot2 [StatMod.Ru Wiki]
Содержание
Красивые графики в ggplot2
Мотивировка
Задание
Баллы
Необходимые навыки и подготовка
Часть 1
Часть 2
Часть 3
1. Скаттерплот («состоятельность выборочного среднего»)
2. График функции («плотность стандартного нормального распределения»)
3. Гистограмма и QQ-plot («равномерное распределение p-values»)
4. Скаттерплот двух категорий («p-value t-критерия с нормальным распределением и t-критерия Welch’а»)
5. Грид из четырех графиков-эмпирических функций распределения («демонстрация теоремы Гливенко—Кантелли»)
Руководитель
Мотивировка
В R есть три системы построения графиков: base graphics, lattice и ggplot2. Среди них невозможно выделить однозначно лучшую. Так, функции base graphics, несмотря на возраст и некоторую негибкость, удобно использовать, чтобы нарисовать что-нибудь на лету в интерактивной сессии R; пакет lattice удобен для представления сразу нескольких графиков на одном изображении, но менее универсален. ggplot2 относительно молод, универсален, предоставляет адекватные настройки по умолчанию, гибок, хорошо вписывается в систему пакетов «tidyverse».
Если студент планирует в будущем заниматься статистикой, высока вероятность, что придется строить приличное количество графиков, в том числе, для квалификационных работ и сопутствующих презентаций. Предлагается, поэтому, освоиться с ggplot2, а также научиться правильно экспортировать полученные результаты так, чтобы они прилично смотрелись в документах и/или на слайдах.
Задание
Почитать про layered grammar of graphics, познакомиться с видами статистических графиков, понять, как ПРАВИЛЬНО рендерить результат для вставки в TeX-документ так, чтобы использовался шрифт документа, а в самом графике рисовались бы произвольные TeX-формулы. Результатом задания является 5 графиков, сделанных по запросу руководителя.
Баллы
2 курс – 15 баллов, 1 курс – 30 баллов.
Необходимые навыки и подготовка
Английский на уровне комфортного чтения технических статей.
Понимать основы TeX. Информацию по TeX можно найти здесь.
Желательно знать, что такое распределение вероятностей (в т.ч. нормальное распределение), функция плотности, гистограмма, среднее.
Часть 1
Ознакомиться с ggplot2.
Теория построения графиков ggplot2 описывается т.н. «layered grammar of graphics», с которой можно ознакомиться по соответствующей статье.
Отличное введение ggplot2 можно прочитать здесь.
Для более детального ознакомления подойдет книга ggplot2: Elegant Graphics for Data Analysis.
Примеры графиков: 1, 2.
Референс по ggplot2
Часть 2
Научиться правильно экспортировать графики.
Графические форматы бывают растровые (png, jpg, …) и векторные (svg, …). Растровые изображения смотрятся в документах ужасно: их нельзя увеличивать без потери качества, текст на графике не является текстом документа, на график нельзя помещать произвольные TeX-вставки. Векторные изображения смотрятся лучше, однако не всегда оказывается тривиально подобрать подходящие шрифты и определить корректный размер картинки, чтобы она не смотрелась слишком большой или слишком маленькой.
Единственно приемлемый вариант, поэтому, это конвертировать изображение в его описание на векторном языке TikZ, которое затем переводится в картинку при рендеринге TeX документа. Плюсом такого метода является возможность включения произвольных TeX вставок в изображение, а также шрифты, которые смотрятся «как родные» в документе. Чтобы разобраться с таким экспортом, необходимо прочитать справку по
в R. Остается проблема корректного задания размера графика. Можно подумать самостоятельно, а, при отсутствии идей, обратиться к руководителю за помощью. 2$ = 100) объема, соответственно, от 1 до $N$. Для каждой выборки посчитать её выборочное среднее. В качестве $N$ можно выбрать, например, 500 или 1000 – что окажется нагляднее
Можно адаптировать следующий код:
library(tidyverse) set.seed(1) mu <- 0 sd <- 10 N <- 1000 means <- 1:N %>% map(rnorm, sd = sd, mean = mu) %>% map_dbl(mean) %>% enframe(name = 'n', value = 'mean')
График Скаттерплот средних (ось ординат) против объема соответствующей выборки (ось абсцисс). Через $y = 0$ провести горизонтальную прямую красного цвета.
Точечки: поэкспериментируйте с размером, цветом, заливкой, чтобы было красиво.
Подписи к осям:
Легенда:
2. График функции («плотность стандартного нормального распределения»)
График Нарисовать график функции dnorm
с параметрами по умолчанию («плотность стандартного нормального распределения»).
Оси:
$x$ от $-4$ до 4
$y$ по умолчанию
Не рисовать тики на осях. Не подписывать оси. Если получится, не рисовать ось $y$ вовсе.
Закрасить область под графиком в интервалах $(-\infty, -2)$ и $(2, \infty)$. Точки $x=-2$, $x=2$ подписать, соответственно, $-|T(\mathbf{x})|$ и $|T(\mathbf{x})|$.
Легенда:
Закрашенная область: $p$-value
Кривая графика: $\mathrm{pdf}_{T\mid H_{0}}(x)$
3. Гистограмма и QQ-plot («равномерное распределение p-values»)
pvalues
.library(tidyverse) set.seed(1) sigma0 <- 1 mu0 <- 0 n <- 100 N <- 100 z <- function(xx) sqrt(length(xx)) * (mean(xx) - mu0) / sigma0 pv <- function(z) 2*(1 - pnorm(abs(z))) pvalues <- replicate(N, rnorm(n), FALSE) %>% map_dbl(z) %>% map_dbl(pv) %>% tibble(pv = .)
График Нарисовать два графика в одном: гистограмму pvalues$pv
и т.н. QQ-plot. Чтобы не вдаваться в статистические детали, QQ-plot нарисуйте, пожалуйста, таким вызовом:
ggplot(pvalues, aes(sample = pv)) + stat_qq(distribution = qunif) + stat_qq_line(distribution = qunif)
Для гистограммы поэкспериментировать с количеством бинов-столбиков, чтобы выглядело наглядно. 1 ) pvs.norm[mu — 169] <- (1 — pnorm(abs(t))) * 2 t <- t.test( boys, girls, «two.sided», var.equal = FALSE, paired = FALSE ) pvs.welch[mu — 169] <- t$p.value } pvalues <- tibble( height = rep(170:180, 2), pv = c(pvs.norm, pvs.welch), type = c(rep(‘norm’, 11), rep(‘welch’, 11)) )
График Нарисовать скаттерплот
против pvalues$height
, используя pvalues$type
в качестве индикатора категории значения. Каждую категорию нарисовать по-своему на графике: цветом и/или видом символа.
Должно получиться что-то похожее на следующий график:
Оси, легенду и всё остальное оформить самостоятельно по образу и подобию графика выше. Красная горизонтальная линия – на уровне $y=0.05$
5. Грид из четырех графиков-эмпирических функций распределения («демонстрация теоремы Гливенко—Кантелли»)
Воспроизведите следующий график:
Здесь изображены эмпирические функции распределения выборок соответствующих объемов из $\chi^2(50)$ (rchisq(n, 50)
) и настоящая функция распределения $\chi^2(50)$. Вам понадобится функция stat_ecdf.
Добавьте легенду.
Руководитель
Зотиков Дмитрий
research/prob_ggplot2.txt · Последнее изменение: 2022/10/02 22:01 — nina
НаверхГрафики в Power BI — Power BI
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 3 мин
ОБЛАСТЬ ПРИМЕНЕНИЯ: ✔️ Power BI Desktop ✔️ служба Power BI
График — это серия точек данных, которые представлены точками и соединены прямыми линиями. График может иметь одну или несколько линий. Графики имеют оси X и Y.
Предварительные требования
- Power BI Desktop
- Служба Power BI
В этом руководстве используется пример продаж и маркетинга для создания графика, отображающего продажи за этот год по категориям.
Скачайте пример PBIX-файла на рабочий стол.
Откройте Power BI Desktop и в строке меню выберите «Открыть>отчет«.
Перейдите к PBIX-файлу «Продажи и маркетинг» и нажмите кнопку «Открыть«.
На панели слева щелкните значок отчета, чтобы открыть файл в представлении отчета.
Выберите , чтобы добавить новую страницу.
Примечание
Для предоставления общего доступа к отчету Power BI и вам, и коллеге необходимо иметь отдельные лицензии Power BI Pro или сохранить отчет в емкости Премиум.
Создание графика
В области «Поля» выберите SalesFactTotal units (Всего единицSalesFact>) и dateMonth (Месяц>). Power BI создаст гистограмму в холсте отчета.
Преобразуйте в график, выбрав соответствующий шаблон графика на панели визуализации.
Отфильтруйте график, чтобы отобразить данные за 2012-2014 год. Если область фильтров свернута, разверните ее. В области «Поля» выберите «Дата>года » и перетащите его на панель «Фильтры». Поместите его под заголовком Фильтры для этого визуального элемента.
Измените расширенную фильтрацию на базовую и выберите 2012, 2013 и 2014.
При необходимости настройте размер и цвет текста диаграммы.
Добавление линий на диаграмму
Линии графика могут иметь много различных линий. В некоторых случаях значения в строках могут быть настолько расходящимися, что они не отображаются вместе. Давайте рассмотрим добавление дополнительных линий к текущей диаграмме, а затем научимся форматировать диаграмму, если значения, представленные линиями, отличаются.
Добавление дополнительных строк
Вместо того, чтобы рассматривать общее количество единиц для всех регионов как отдельную линию на графике, давайте разделим общее количество единиц по регионам. Добавьте дополнительные линии, перетащив геообъект>Регион в контейнер условных обозначений.
Использование двух осей Y
Что необходимо делать, если вы захотите посмотреть общие продажи и общее количество единиц на одном графике? Номера продаж намного выше, чем номера единиц, что делает график непригодным для использования. На самом деле красная линия для общего количества единиц отображается как нуль.
Чтобы отобразить сильно расходящиеся значения на одном графике, используйте комбинированную диаграмму. Вы можете узнать все о комбинированных диаграммах, прочитав раздел Комбинированные диаграммы в Power BI. В приведенном ниже примере можно отобразить продажи и общее количество единиц на одной диаграмме, добавив вторую ось Y.
Выделение и перекрестная фильтрация
Сведения об использовании области «Фильтры» см. в разделе Добавление фильтра в отчет.
С помощью выделения точек данных на графике можно выполнить перекрестное выделение и перекрестную фильтрацию этих данных в других зрительных образах на странице отчета (и наоборот). Чтобы выполнить эту процедуру, откройте вкладку Доля рынка.
На графике одна точка данных представляет собой пересечение точки на оси X и оси Y. При выборе точки данных Power BI добавляет маркеры, указывающие, какая точка (для одной строки) или точки (если есть две или более строк) являются источником для перекрестного выделения и перекрестной фильтрации других визуальных элементов на странице отчета. Если визуальный элемент очень плотный, Power BI выберет ближайшую точку, где вы щелкаете по визуальному элементу.
В этом примере мы выбрали точку данных, которая включает в себя: Июль 2014 г., R12M 33,16 % доли рынка единиц и 34,74 % доли рынка единиц.
Обратите внимание на то, как гистограмма выделена перекрестным выделением, а индикатор — перекрестной фильтрацией.
Сведения о том, как настроить параметры перекрестного выделения и фильтрации диаграмм, см. в статье Взаимодействия визуализаций в отчете Power BI.
Рекомендации и устранение неполадок
- Одна линейчатая диаграмма не может иметь двойные оси y. Вместо этого необходимо использовать комбинированную диаграмму.
- В приведенных выше примерах графики были отформатированы для увеличения размера шрифта, изменения цвета шрифта, добавления заголовков осей, центрирования заголовка и условных обозначений графика, начала обеих осей с нуля и т. д. Панель форматирования (значок кисти ролика) имеет, на первый взгляд, бесконечный набор параметров для того, чтобы графики выглядели так, как вы хотите. Лучший способ научиться — открыть панель форматирования и изучить ее.
Дальнейшие действия
Типы визуализаций в Power BI
What Makes a (Graphics) Systems Paper Beautiful
What Makes a (Graphics) Systems Paper Beautiful
Kayvon Fatahalian, Stanford University
Приложение: я добавил несколько дополнительных советов для руководителей конференций, членов комитетов по работе с документами и сортировщиков бумаг.
«SIGGRAPH ненавидит документы по системам», — говорят разочарованные исследователи.
Во время совещания SIGGRAPH PC я услышал пренебрежительный комментарий члена комитета: «Я не верю, что здесь есть что-то новое, может быть, это хороший системный документ».
И из недавнего обсуждения SIGGRAPH после опровержения: «Это явно системный документ, а не исследовательский вклад».
Вопрос не в том, есть ли место системным исследованиям в графическом сообществе. (Да!) Скорее, эти комментарии предполагают, что и авторы графических статей, и рецензенты неправильно понимают интеллектуальную ценность исследований графических систем. Понимание ключевых принципов и ценностей системного исследовательского мышления важно для разработчиков систем, которые хотят сообщить о своих выводах, и для рецензентов, оценивающих эти результаты. Улучшение этого понимания позволит графическому сообществу лучше подготовиться к оценке и распространению своих ценных системных результатов.
В этой статье я надеюсь внести свой вклад в наше общее понимание принципов (графических) системных исследований. Я подозреваю, что большинству исследователей компьютерной графики, даже тем, кто явно не стремится создавать новые системы, может быть полезно применять в своей работе принципы системного мышления.
Эта статья не является попыткой дать исчерпывающее руководство по написанию статей по системам, для которых есть много отличных вариантов. Например, я рекомендую «Советы Дженнифер Видом по написанию технических статей» [Widom 2006] или «Как (и как не надо) писать хорошую статью по системам» [Levin and Redell 1983].
Исследования графических систем важны для SIGGRAPH.
Достижения в графических системах уже давно играют важную роль в SIGGRAPH. На самом деле системная работа исторически оказывала несоразмерное влияние не только на развитие компьютерной графики, но и на широкий спектр технических областей. Легко составить впечатляющий список примеров.
- В статье Рейеса [Cook 84] представлены ключевые идеи системы рендеринга, которая более двух десятилетий генерировала изображения для большинства художественных фильмов.
- Reality Engine Graphics [Akeley 93] описал методы, которые продолжают лежать в основе современного графического конвейера с ускорением на GPU, который сейчас есть в каждом ноутбуке и смартфоне в мире (рынок на 100 миллиардов долларов). Помимо игр, сегодняшние многофункциональные пользовательские интерфейсы не существовали бы без ускорения GPU.
- Программируемый вершинный процессор [Lindholm 01] в конечном итоге превратился в обычные программируемые ядра современных графических процессоров. Эволюция этой архитектуры ускорила приложения во многих областях помимо графики (физика, молекулярная биология, медицинская визуализация, вычислительные финансы и многие другие). Современные программируемые ядра GPU в настоящее время являются основными вычислительными механизмами для глубокого обучения и для многих из самых быстрых суперкомпьютеров в мире.
- Идеи языка шейдинга RenderMan [Hanrahan 90] и Cg [Mark 04] сформировали дизайн современных языков шейдинга, которые сегодня сохраняются как в онлайновых, так и в оффлайновых графических системах.
- Brook [Buck 04] был прямым предшественником CUDA, языка, который стал центральным для популяризации параллельных вычислений и теперь используется широким кругом доменов для программирования графических процессоров.
- Фототуризм [Snavely 06] предоставил новый способ организации и просмотра растущего массива онлайн-коллекций фотографий и открыл двери для новых приложений и продуктов, использующих большие визуальные данные.
- Системы Direct3D 10 [Blythe 06] и OptiX [Parker 10] описывают архитектуры, которые сегодня составляют основу практически всех систем растеризации в реальном времени и трассировки лучей с ускорением на графическом процессоре (включая новейшее оборудование для трассировки лучей на графических процессорах).
- Идеи во Франкенкамере [Адамс 10] можно ясно увидеть в текущих версиях API камеры Android от Google, который используется в качестве аппаратной абстракции для программирования одной из самых популярных и самых передовых камер в мире.
- Halide [Ragan-Kelley 12] сейчас используется в производстве в Google для обработки большинства изображений, снятых на телефоны Android, а также в Photoshop и Instagram. Хотя Halide был разработан для графических приложений, его идеи напрямую вдохновили новые системы генерации кода для глубокого обучения, такие как TVM, которые лежат в основе таких сред, как Apache MX.Net.
В последние годы мы видели статьи на SIGGRAPH, в которых описывался конвейер обработки HDR-фотографий в современных камерах смартфонов [Hasinoff 16][Wadhwa 18], практические конвейеры генерации VR-видео [Andersen 16], дизайнерские решения, лежащие в основе реализации широко используемая библиотека OpenVDB [Museph 13] и систем для крупномасштабной обработки видео [Poms 18]. На SIGGRAPH 2016 была целая сессия технических документов по предметно-ориентированным языкам (DSL) для графики и моделирования, а в 2018 году целый специальный выпуск TOG был посвящен проектированию современных систем производственного рендеринга.
Статьи, посвященные вкладу систем, составляют меньшинство на SIGGRAPH, но они часто публикуются. Без сомнения, эти усилия заняли важное место в графическом сообществе, а также в более широком технологическом мире.
Что представляет собой исследовательский вклад?
Попросите исследователей компьютерной графики назвать определяющие характеристики их любимых бумаг. Независимо от области, я подозреваю, что списки будут похожими. Отличные статьи учат нас чему-то, чего мы не знали о нашей области: либо они содержат идею, о которой мы никогда не думали, либо заставляют нас думать по-другому (или более ясно) о понятии, которое, как мы думали, мы знаем, либо вводят труднодоступную информацию. создать артефакт (или инструмент), который будет полезен для будущего прогресса.
Читатель узнал что-то новое:
- Новый способ формализации задачи (например, применение к задаче нового математического аппарата)
- Лучший алгоритм (быстрее, стабильнее, проще, меньше параметров) или аппроксимация, которая работает потрясающе хорошо.
- Доказательство, устанавливающее ранее неизвестное свойство или связь между двумя понятиями.
- Идентификация примитивов, раскрывающих структуру предметной области.
- Заставил читателя подумать: «Я не знал, что это возможно» или «Я никогда не думал об этой проблеме таким образом».
- Представляет новое классное приложение.
Возможно, менее удивительный, но в целом полезный для прогресса других:
- Эксперимент, дающий базовый результат для нового типа задач.
- Новый набор данных, позволяющий решать новые проблемы в полевых условиях.
Исследование графических систем, как и любое хорошее исследование, не освобождает от интеллектуального вклада.
Как и в случае со всеми хорошими исследовательскими работами, интеллектуальный вклад системной статьи гораздо больше заключается в идеях и мудрости, содержащихся в статье, и гораздо меньше в конкретном артефакте (реализации), который она описывает.
Тем не менее, те, кто не привык оценивать системные исследования, могут с трудом определить их интеллектуальный вклад, потому что они часто не записаны явно в форме алгоритма или уравнения. И наоборот, авторы статей, потратившие значительное время на внедрение и разработку системы (и, возможно, даже на ее успешное развертывание для пользователей), часто ошибочно полагают, что простое описание возможностей системы и ее реализации представляет собой «хорошую» системную статью.
Определение проблемы: хороший системный документ описывает требования к системе с точки зрения целей, нецелей и ограничений.
В некоторых областях компьютерной графики входные и выходные данные задачи обычно четко определены. Проблема в том, что сама проблема трудно решить! Напротив, формулирование и определение правильной проблемы, которую необходимо решить, является важной частью системного исследования — часто это самая трудная часть. Хорошее системное мышление требует, чтобы архитектор усвоил сложный набор (потенциально противоречащих друг другу) целей проектирования, проектных ограничений и потенциальных стратегий решения. Поэтому, чтобы оценить вклад системного документа, важно четко понимать эти требования к проблеме.
Описание проблемы требует от системного архитектора значительного времени на понимание предметной области и приобретение знаний об аппаратном и программном обеспечении, человеческом факторе и алгоритмических методах. Таким образом, работа по четкому установлению и формулировке системных требований сама по себе является частью интеллектуального вклада статьи о графических системах.
Другими словами, в хороших системных работах часто выдвигается аргумент в духе:
Мы стремимся достичь целей A, B, C при ограничениях X, Y, Z. Не существовало никакой системы для этого, когда мы изложены в наших усилиях (иначе мы, вероятно, использовали бы это!), поэтому, исходя из нашего опыта создания систем в этой области, мы можем преобразовать этот опыт в определенный набор системных требований. Эти требования могут быть неочевидны для читателей, которые не тратили много времени на обдумывание или создание приложений в этой области.
Эта установка важна по нескольким причинам:
- Она определяет требования к «хорошему» решению, сообщая о ключевых проблемах проблемной области. Поскольку неожиданные ограничения и требования проявляются только при построении реальных комплексных систем, хорошие системные документы выполняют эту работу для сообщества.
- Он обеспечивает основу для оценки качества решений по проектированию системы, принятых авторами. Оценка качества предлагаемого решения предполагает постановку вопроса: являются ли проектные решения, принятые авторами, причиной того, что система достигла заявленных целей?
- Он обеспечивает контекст, который ведет к более обобщенным знаниям. Поскольку читатели, вероятно, не имеют тех же целей и ограничений, что и авторы статьи, понимание целей и ограничений автора помогает читателям понять, какие проектные решения применимы к их собственным проблемам и какие аспекты предлагаемой системы, возможно, потребуется изменить или игнорировать.
Давайте рассмотрим несколько примеров.
Пример 1: Раздел 1 статьи Рейеса посвятил целый столбец текста необходимости Pixar обрабатывать сцены неограниченной сложности, которые они определяли с точки зрения геометрии сцены и данных текстуры. В колонке глобальные световые эффекты также были отмечены как важная нецелевая задача, поскольку опыт авторов в Pixar показал, что глобальные эффекты часто можно разумно аппроксимировать локальными вычислениями с использованием наложения текстур.
Пример 2: Десять лет спустя Билл Марк сформулировал сложный набор целей дизайна для Cg. Чтобы повысить производительность разработчиков, необходимо было повысить уровень абстракции для программирования раннего оборудования GPU. Сделать это было сложно, поскольку разработчики ожидали прозрачности производительности низкоуровневых абстракций (причиной использования графических процессоров была производительность!), а поставщики графических процессоров хотели гибкости для быстрого развития аппаратных реализаций графических процессоров. Эти цели сильно отличались от тех, которые стояли перед создателями предыдущих языков шейдинга для автономных средств визуализации, и в конечном итоге были решены с помощью подхода, который был в основном «C для графического оборудования», а не язык шейдинга для графики, такой как RSL.
Пример 3. В недавнем документе Google HDR+ системные требования представлены в виде набора руководящих принципов для определения того, какие алгоритмы являются кандидатами на включение в современное приложение для камеры смартфона: они должны работать достаточно быстро, чтобы обеспечить немедленную обратную связь, не требуют настройки человеком и никогда не производят результат, который выглядит хуже, чем традиционная фотография.
Пример 4. В недавней работе Йонг Хе о языке программирования шейдеров Slang требования к проблеме были установлены в подробном справочном разделе (раздел 2), в котором описывается, как цель поддержки модульного кода шейдера расходилась с целью написания высокопроизводительных шейдеров на языке программирования Slang. современные игровые движки. Этот раздел служил для формулирования целей, а также для обсуждения альтернатив дизайна.
Примечание для рецензентов: работая на ПК SIGGRAPH, я заметил, что рецензенты просили сократить изложение описания проблемы на том основании, что в тексте не описывается непосредственно предлагаемая система. Хотя все письменные работы должны быть максимально краткими, в этих предложениях не учитывалась техническая ценность точного описания решаемой проблемы. Эта обратная связь, по сути, просила авторов удалить изложение, касающееся ключевого интеллектуального вклада, чтобы освободить место для дополнительных деталей реализации системы.
Ключевой вывод: во многих хороших статьях по системам выдвигается новое организующее наблюдение о структуре проблемы.
Учитывая установленные цели и ограничения, системный документ часто предлагает формулировку проблемы, которая облегчает выполнение этих требований. Другими словами, во многих системных статьях приводится аргумент:
Полезно думать о проблеме с точки зрения этих структур (например, используя эти абстракции, эти представления или разлагая проблему на эти модули), потому что, когда , есть неоспоримые преимущества.
Преимущества могут принимать форму: улучшенной производительности системы (или масштабирования), повышенной производительности программиста, большей расширяемости/универсальности системы или возможности предоставления новых возможностей на уровне приложений, которые раньше были невозможны.
Определение полезной структуры проблемы часто формирует центральную интеллектуальную идею системной статьи. Как и в других областях компьютерной графики, элегантные концептуальные идеи можно изложить в нескольких предложениях. Например:
- Система рендеринга Рейеса: микрополигон — это простое объединяющее представление, которое служит общим интерфейсом между многими типами поверхностей и многими методами затенения поверхностей. Разбиение поверхностей на микрополигоны одновременно отвечает целям поддержки произвольной геометрической сложности (поскольку сложные поверхности всегда можно разбить на микрополигоны) и избегания артефактов наложения.
- Язык затенения Renderman: учитывая разнообразие материалов и источников света в сценах, желательно определить интерфейс для расширения возможностей средства визуализации, предоставив язык программирования для выражения этих вычислений. Для производительности и производительности этот язык программирования должен предоставлять абстракции высокого уровня, соответствующие условиям уравнения рендеринга.
- Cg: язык программирования для новых программируемых графических процессоров не должен быть языком затенения, специфичным для предметной области, а должен быть языком относительно общего назначения, предназначенным для обеспечения прозрачности производительности при нацеливании на графические процессоры.
- Frankencamera: аппаратные интерфейсы современных камер несовместимы с потребностями многокадровой фотографии, но простой абстракции временной шкалы достаточно для описания поведения камеры для многокадровых последовательностей.
- Halide: сочетание шести простых директив планирования (разделить, переупорядочить, вычислить_в, сохранить_в, векторизовать, распараллелить) достаточно для принятия основных «высокоуровневых» решений по оптимизации кода для широкого спектра современных приложений обработки изображений.
- Сленг: специальные стратегии, используемые современными играми для достижения модульности кода шейдера и специализации кода (взлом препроцессора, вставка строк и пользовательские DSL), можно было бы выразить гораздо элегантнее, если бы HLSL был расширен небольшим набором хорошо известных функций из популярные современные языки программирования.
- Компоненты шейдеров: чтобы одновременно получить преимущества специализации и модульности кода при создании библиотеки шейдеров, необходимо согласовать границы декомпозиции кода для специализации кода с границами для передачи параметров CPU-GPU.
- Ebb: абстракции реляционной алгебры могут использоваться для выражения различных алгоритмов физического моделирования в независимой от представления манере.
Хорошие системные документы освещают ключевые проектные решения (и обсуждают альтернативы этим решениям).
Учитывая набор требований, системный архитектор обычно сталкивается с различными стратегиями решения. Например, требование к производительности может быть решено за счет алгоритмических инноваций, разработки нового специализированного оборудования или того и другого (модификация существующего алгоритма для лучшего сопоставления с существующим параллельным оборудованием). В качестве альтернативы, путь к повышению производительности может лучше всего идти через сужение области действия системы до меньшей области задач. Цель производительности может быть достигнута за счет разработки новых абстракций программирования, которые могут быть реализованы как новый предметно-ориентированный язык или через библиотеку, реализованную в существующей системе.
В результате автор системной статьи должен определить ключевые варианты, сделанные при архитектуре своей системы, и разработать обоснование этих проектных решений. Это обычно включает в себя обсуждение палитры потенциальных альтернатив и предоставление аргументов в пользу того, почему сделанный выбор является предпочтительным способом удовлетворения заявленных требований и целей проектирования. Недостаточно просто описать пройденный путь, не говоря, почему он считается хорошим.
Обсуждение ключевых проектных решений дает мудрость и рекомендации для будущих разработчиков системы. Поняв обоснование выбора системного разработчика, читатель сможет лучше определить, какие решения, сделанные в документе, могут быть применимы к их собственным требованиям.
Размышляя о своих дизайнерских решениях, исследователи должны учитывать следующее:
Отличать ключевые решения от деталей реализации. Системный архитектор должен четко указать, какие решения он считает тщательно продуманными решениями, имеющими центральное значение для дизайна системы (вклад статьи, за которую он хочет получить признание), и какие решения были приняты «просто для того, чтобы что-то заработало». Когда для полноты изложения необходимо упомянуть менее важные решения, полезно уточнить, что «алгоритм X использовался, но решение не считалось фундаментальным, и, вероятно, возможны многие другие не менее хорошие варианты».
Аргументируйте, что «должно» быть сделано, а не что «можно» сделать. Другими словами, хорошие системные архитекторы стремятся аргументировать, почему принятые решения являются предпочтительными решениями для достижения определенных системных целей. Одним из общих свойств предпочтительного решения является то, что оно простое. Поэтому частым вопросом при оценке качества проектных решений является то, являются ли предписанные решения максимально простым подходом к достижению желаемых целей. Представление более сложного метода часто может быть заманчивым для студентов, но хорошо спроектированная система будет избегать сложности, которая не является фундаментальной для достижения целей.
Выявление сквозных проблем. Многие важные проектные решения основаны на рассмотрении сквозных вопросов, которые проявляются только при построении комплексной системы. Например, если рассматривалась только одна цель проектирования или один аспект системы, может быть несколько жизнеспособных решений. Однако часто бывает так, что проектные решения системного архитектора мотивированы комплексным взглядом на проблему. Например:
- Алгоритм X может производить выходные данные более низкого качества, чем алгоритм Y, но X может быть быстрее и проще, а ошибки, создаваемые X, могут быть приемлемыми, поскольку они покрываются работой более поздней стадии обработки.
- Запуск более дорогого алгоритма на этапе 1 системы может быть предпочтительнее, поскольку он генерирует более однородные выходные данные, которые лучше подходят для распараллеливания на этапе 2.
- Конкретная глобальная оптимизация может быть возможна на определенном этапе обработки, но эта оптимизация будет препятствовать объединению этапа с другими модулями системы, что ограничивает расширяемость системы.
Обсуждение сквозных вопросов является важным аспектом системного мышления. (это менее распространено в методоцентрических исследованиях). Сквозные и сквозные проблемы часто являются причиной того, что более сложные методы исследовательского сообщества могут быть менее желательны для использования в эффективных системах. Часто новые методы (разумно) разрабатываются на основе упрощающих предположений, которые помогают облегчить изучение новых методов. Системное мышление должно учитывать полную картину контекста, в котором методы используются на практике.
Примечание для авторов статьи: Неспособность описать (и впоследствии оценить) проектные решения является наиболее распространенной ошибкой при написании системной статьи. Я видел материалы, описывающие интригующие системы, но справедливо отвергаемые, потому что изложение не отражало того, что было сделано и почему. Эти документы не могли дать сообществу общих советов по построению систем и больше напоминали перечисление функций или системную документацию.
Оценка: отвечали ли ключевые проектные решения заявленным требованиям и целям?
Если документ четко описывает цели и ограничения системы, а также формулирует ключевые решения по проектированию системы, то стратегия оценки системы состоит в предоставлении доказательств того, что описанные решения способствовали достижению поставленных целей.
В частности, когда оценка системы сосредоточена на производительности, возникает соблазн сравнить сквозную производительность предлагаемой системы с производительностью конкурирующих альтернативных систем. Хотя такая оценка показывает, что цели по производительности были достигнуты, не менее (а иногда и более) важно проводить эксперименты, специально оценивающие преимущества ключевых оптимизаций и проектных решений. Оценка того, почему был достигнут успех, необходима для проверки правильности основных утверждений статьи. Неспособность выполнить эту оценку оставляет открытой возможность того, что успех системы обусловлен другими факторами. (например, разработка высококачественного программного обеспечения), чем предлагаемые ключевые идеи.
Оценка: привносит ли система новые возможности в поле?
Встречи SIGGRAPH PC часто начинаются с обсуждения важности продвижения «новых идей», и существует широкое согласие в том, что показатели для оценки меняются, когда они представляют новую тематическую область или открывают новые горизонты. Например, системы, которые вводят новый опыт или новые способы осмысления данных (например, Phototourism [Snavely 2006] или AverageExplorer [Zhu 2014]), не имеют очевидного численного сравнения с предыдущими системами. Оценка этого типа работы обычно включает в себя демонстрацию нового опыта или идей, которые теперь возможны с учетом новых возможностей. (В этих случаях выбор методов был «хорошим», поскольку они позволяли реализовать новую возможность.)
При оценке достоинств документа о системах рецензентам важно учитывать, в какой степени система вводит новые возможности в полевых условиях и каковы последствия этих новых возможностей. В то время как новые методы взаимодействия, такие как два приведенных выше примера, часто легче идентифицировать как обеспечивающие новые возможности, также может быть случай, когда резкое улучшение производительности, масштаба операций или производительности программиста переводит поле в «новые возможности». «режим. Например, возможность впервые обеспечить производительность в режиме реального времени (включение интерактивных приложений или взаимодействие с человеком в цикле) или возможность писать приложения, использующие все более крупные базы данных изображений, можно было бы считать новыми возможностями, если бы они Раньше программистам было сложно или невозможно выполнять эти задачи.
В этих случаях рецензенты должны помнить о ценности расширенного количественного сравнения с предшествующими системами или методами, поскольку предшествующие системы, отвечающие установленным ограничениям, могут не существовать. Точно так же «пользовательские исследования» могут быть менее ценными, чем понимание того, в какой степени система позволяет ее авторам (которые могут быть практикующими экспертами в какой-либо области) выполнять задачи, которые никогда раньше не выполнялись сообществом. Когда нереалистично дать однородные оценки, авторы статьи обязаны привести четкие аргументы в пользу того, почему предоставленная оценка достаточна для придания научной достоверности предлагаемым идеям, а рецензенты должны тщательно рассмотреть последствия предложенных идей. работай. Запросы на длинную числовую оценку не должны использоваться вместо размышлений и суждений автора/рецензента.
Заключительные мысли
Я надеюсь, что эта статья подчеркнула глубину мысли, необходимую для хороших системных исследований и написания хороших системных статей. Архитектура хороших систем — сложная, продуманная задача, которая включает в себя понимание сложного набора факторов, балансировку противоречивых целей и ограничений, оценку множества потенциальных решений для создания единой работающей системы и измерение результатов этих идей.
Подход «у нас есть результат, теперь просто запишите его» редко оказывается удачным при написании системной статьи. Поскольку, как правило, нет нового доказательства, уравнения или псевдокода алгоритма, на которые можно было бы указать как на явно идентифицируемый вклад, интеллектуальная ценность системной работы передается через тщательное изложение, которое документирует мудрость, полученную в процессе проектирования. Лично я считаю, что процесс письма является ценным механизмом для достижения ясности в отношении результатов моей работы. По мере того, как я пытаюсь обосновать дизайн системы, на ум приходят новые альтернативы и оценочные вопросы. (Мы уверены, что не можем удалить эту функцию и получить тот же результат? Откуда мы знаем, что нам это действительно нужно?)
С другой стороны, рецензирование документа по системам требует серьезных размышлений и суждений. Рецензент должен оценить уровень своего согласия с заявленными целями, требованиями и проектными решениями. Они должны измерять ценность услуг, обеспечиваемых этими проектными решениями, и учитывать их полезность и значимость для пользователей. Наконец, они должны определить, есть ли доказательства того, что предложенные решения действительно привели к результатам. Поскольку истинное испытание хорошей работы системы заключается в том, будут ли идеи приняты более широким сообществом с течением времени, рецензент должен использовать свой собственный вкус и опыт, чтобы делать прогнозы о вероятности того, что это произойдет, и о степени мудрости, которую он приобрел.
Желаю всем удачи в дальнейшей работе с графическими системами!
Благодарности: Спасибо Эндрю Адамсу, Манишу Агравала, Фредо Дюрану, Биллу Марку, Моргану Макгуайру, Джонатану Рэган-Келли, Мэтту Фарру, Питеру-Пайку Слоану и Джин Янг за полезные отзывы.
Работа Эдварда Тафте и Graphics Press
Graphics Press LLC P.
O. Box 430 Чешир, Коннектикут 06410 800 822-2454«Эдвард Тафте — сетчатка нашего времени, открывающая откровения, когда-либо соединяя глаз и мозг в просвещающих новых путях. Он создает шедевры дизайна, которые сами по себе шедевры дизайна. Взгляд свежим взглядом: Смысл, Пространство, Данные, Истина берет все, что он знает, в еще более глубокий уровень мудрости и более широкое поле исследования. Совершенно восхитительная работа.
Стюарт Брэнд, создатель каталога Whole Earth
Закажите прямо сейчас в Graphics Press.
Взгляд свежим взглядом:
Значение, пространство, данные, истина
Фермы Хогпен-Хилл: парк ландшафтных скульптур инопланетян
Фермы Хогпен-Хилл — это ферма деревьев площадью 234 акра + парк ландшафтных скульптур инопланетян в графстве Личфилд на северо-западе Коннектикута со 100 произведениями искусства инопланетян.
Парк скульптур сейчас закрыт на сезон. Напишите нам, чтобы мы были добавлены в список контактов; Вы будете уведомлены, как только будущие даты открытия будут подтверждены. Пожалуйста, не приходите в дни, когда парк закрыт. Доступа нет, ворота закрыты.
«Это дикий, причудливый, грандиозный и невероятно красивый, со скульптурами от поверхностей из нержавеющей стали, отражающих каждый нюанс света, до кружевные каменные стены и безмолвные мегалиты из валунов». Мишель Макдональд, Boston Globe
«Лучший парк скульптур в Северной Америке: фермы Хогпен-Хилл Эдварда Тафте» Филип Гринспан
«Каждая из работ преображает пейзаж… считайте себя счастливчиком» если вы сможете увидеть эти удивительные произведения вблизи». Атлас Обскура
Анализ/представление данных/информации:
Онлайн-видеокурс, который преподает Эдвард Тафте
Онлайн-видеокурс открыт для регистрации.
Темы, затронутые в этом однодневном онлайн-курсе, включают:
Фундаментальные стратегии анализа/дизайна данных: диаграммы, визуализация данных, карты, изображения, текст, таблицы, видео, мелкие кратные, спарклайны, медицинские интерфейсы, предложения и абзацы. Будущее информационных дисплеев: видеокарты 4K, 6K и стоп-кадр, движущийся во времени.
Практические реальные примеры: медицина, бизнес и финансы, НАСА, медицинские исследования, науки и техники, а также 40-страничную главу из книги «Взгляд свежим взглядом на анализ данных, когда правда имеет значение.
Как сделать встречи умнее и короче — обучение, очень большие встречи, медицинские приемы, слушания, принятие решений небольшими группами. Как улучшить как содержание, так и достоверность презентаций.
Зрительская аудитория: как быть умным потребителем презентаций, оценивая их достоверность и содержание.
323 000 человек с 1994 по 2020 год посетили постоянно меняющиеся живые версии. курса ET Представление данных и информации. Но теперь у нас есть онлайн видео курса. Этот курс можно просмотреть в любое время, и студенты получают все 5 ET книги заранее по почте — для занятий в зале и чтения во время курса. Онлайн-видео тесно связано с книгами, с кратким чтением на протяжении всего курс.
Эдвард Тафте преподает весь курс.
Каждый студент получает все пять книг ET по информационному дизайну:
«Однажды дальновидный день… озарения этого класса ведут к новым уровням понимания как для создателей, так и для зрителей визуальных дисплеев». WIRED «Леонардо да Винчи данных». НЬЮ-ЙОРК ТАЙМС «Галилей графики». БЛУМБЕРГ
«Туфте» однодневный курс лучший в истории» taosecurity Эдвард Тафт курс
«Эдвард Тафт: Триумф хорошего дизайна» Нью-Йорк Курс Эдварда Тафте
«Мастер статистики вплетает изображения Google в визуальные одеяла». Грань
» думающий глаз» NPR Science Friday о текущей работе
«The Information Sage» Washington Monthly Назначение Тафте президентом
«Любопытные неудачники: Стив Джобс, Стив Возняк, Эдвард Тафти, Аарон Шварц» Сланец
Эдвард Тафти — статистик и художник, заслуженный профессор политических наук, Статистика и информатика в Йельском университете. Он написал, разработал и самостоятельно издал 4 классические книги по визуализации данных. The New York Times описала ET как «Леонардо да Винчи данных» и Bloomberg как «Галилео графики». Он сейчас завершение книги Значение, пространство, модели, данные, правда, и строительство фермы деревьев площадью 234 акра и парк скульптур на северо-западе Коннектикута, в котором будут выставлены его работы, и он останется открытым пространство навечно. Он основал Graphics Press, ET Modern Gallery/Studio и Hogpen. Хилл Фармс.
Все 5 книг Эдварда Тафти теперь также в мягкой обложке,
$180 за все 5
Каталог + корзина для покупок
Визуальное отображение количественной информации 200 страниц
Предусмотренная информация 128 страниц
Визуальные объяснения 160 страницы
Прекрасные доказательства 214 Pages
. Прекрасные доказательства 214 Pages
: Свещание.