Правильное расширение ggplot2?

Недавно появилось несколько изящных способов использования ggplot2, и были опубликованы частичные или полные решения:

ggheat примечателен тем, что он скорее разрушает метафору ggplot, просто создавая график, а не возвращая объект.

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

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

Я хотел бы научиться добавлять конкретную функцию или разрабатывать новую geom, и сделайте это правильно. ggplot2 может не предназначаться как общий графический пакет в том же смысле, что и сетка или базовая графика,но есть очень много графиков, которые являются всего лишь шагом или двумя расширениями от существующего geom ggplot2. Когда возникают такие ситуации, я обычно могу собрать достаточно объектов, чтобы что-то сделать один раз, но что, если мне понадобится один и тот же сюжет несколько десятков раз? Что, если другим людям это нравится и они хотят использовать его - теперь им приходится выполнять один и тот же процесс каждый раз, когда им нужен этот график. Мне кажется, что правильным решением является добавление в stat_heatplot и geom_heatplot или добавление geom_Tuftebox для Tufte box plots и т.д. Тем не менее, я никогда не видел примера расширения ggplot2; просто примеры того, как его использовать.

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

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

38
задан Community 23 May 2017 в 12:25
поделиться