正确扩展ggplot2?

Ari*_*man 38 r ggplot2 prototype-programming

最近出现了ggplot2的一些巧妙用途,并且已发布部分或完整解决方案:

ggheat是值得注意的,因为它只是通过绘制而不是返回一个对象来打破ggplot隐喻.

大括号解决方案值得注意,因为没有一个真正符合ggplot2高级概念(例如,您应该指定一系列您想要打破的点,然后在其他地方能够指定您希望该范围显示的方式 - - 支架,盒子,紫牛等).

GGPLOT2书(我很快就会订购并已阅读2个网络章节)似乎是有关使用语法和功能,而不是写新的或广泛延伸现有的.

我想学习添加一个特定的功能或开发一个新的geom,并正确地做到这一点. ggplot2可能不会像基本图形一样用作通用图形包grid,但是有很多图表只是现有ggplot2 geom的一步或两步扩展.当这些情况出现时,我通常可以将足够的物体放在一起做一次,但如果我需要几十次相同的情节呢?如果其他人喜欢它并且想要使用它会怎么样 - 现在他们每次想要那个图表时都必须通过相同的过程进行处理.这在我看来,正确的解决办法是在加stat_heatplotgeom_heatplot,或者添加geom_Tuftebox塔夫特箱线图,等等.但是我从来没有见过的真正延伸GGPLOT2的例子.只是如何使用它的例子.

有哪些资源可以深入挖掘ggplot2并开始扩展它?我特别感兴趣的是如上所述在轴上指定范围的高级方法,但是关于ggplot2 tick的内容的一般知识也是受欢迎的.

没有一个连贯的指南(很少有足够先进的修补,因此可能不存在),如何去学习内部?检查源显然是一种方式,但开始的功能,等等.

had*_*ley 25

ggplot2逐渐变得越来越可扩展.开发版本https://github.com/hadley/ggplot2/tree/develop使用roxygen2(而不是两个独立的本土系统),并开始从proto切换到更简单的S3类(目前完整用于coords和scale) .这两个更改应该有希望使源代码更容易理解,因此其他人更容易扩展(通过ggplot2的pull请求增加的事实进行备份).

将在下一版本中包含的另一项重大改进是Kohske Takahashi对指南系统的改进(https://github.com/kohske/ggplot2/tree/feature/new-guides-with-gtable).除了改进默认指南(例如,使用优雅的连续彩条),他的更改还可以更轻松地使用您自己的自定义图例和轴覆盖默认值.这样就可以在它们可能属于的轴上绘制花括号.

下一轮的大变化(我可能无法在2012年夏天解决)将包括重写geoms,stats和位置调整,沿着图层包中的草图(https:// github). com/hadley/layers).这应该使得地理位置,统计数据和位置调整更容易编写,并有望促进更多的社区贡献,例如geom_tufteboxplot.


And*_*rie 8

我不确定我同意你的分析.我将解释原因,然后指出一些资源来编写自己的geoms.

ggheat

据我所知,ggheat返回一个类的对象ggplot.因此,它是ggplot的一个方便的包装器,为特定用例定制.虽然qplot它更通用,但它原则上也是一样的:它是一个包装器ggplot,对数据进行一些有根据的猜测并选择合理的默认值.Hadley称这个绘图函数,它在ggplot2书的第181页简要描述.

大括号

大括号解决方案完全符合ggplot哲学所说的,即从表示中分离数据.在这种情况下,数据由一个小的自定义函数生成并存储在一个data.frame.然后使用有意义的geom显示它,即geom_line.

quo vadis?

您已经注意到(在r聊天室中)您希望使用更通用的方法来绘制花括号.以下几行(我同时解释和扩展):

  • 以边界框坐标(即x0,x1,y0和y1)的形式提供数据
  • 指定"统计",例如括号,框或其他
  • 指定一个geom,例如geom_custom_shape

这听起来像是大括号解决方案背后的理念的一个很好的概括和扩展,并且显然需要编写一个新的geom.有一个官方的ggplot wiki,你可以在其中找到创建新geom的说明.