问题标签 [ggproto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
62 浏览

r - `geom_abline()` 如何不影响 x 和 y 比例?

有谁知道里面的哪个参数geom_abline()不影响 x 和 y 比例?

draw_panel()w/i函数GeomAbline获取底层的“范围”,但该线通常应该位于原始比例之外:

我的猜测是参数/函数ggplot2::StatIdentityggplot2::PositionIdentity设置ggplot2:layer()geom_abline(). 但我不明白这是如何工作的?我的动机是写一个新geom_*的也不影响 x 和 y 比例。

0 投票
0 回答
23 浏览

r - 对于新的“ggproto”,需要使用“extra_params”指定哪些参数

出于好奇,是否有任何文档说明需要在对象内部定义哪些extra_params参数ggplot2::ggproto

我最初的想法是它可能是在 a 的参数中定义的参数paramsggplot2::layer()但事实并非如此。

例如,如果您查看 的extra_paramsGeomRibbon我猜想只有未明确包含在相应draw_group()函数调用中的参数必须包含在内。例如GeomRibbon

  • extra_params包括"orientation",这可能由params$extra_paramsw/i解决setup_data()
  • whileextra_params不包含"outline.type",直接交给函数调用draw_group()
0 投票
1 回答
185 浏览

r - 修改垂直图例中关键字形之间的间距,同时保持关键字形边框

作为这个著名线程的后续行动。我决定提出一个新问题,因为这更专门针对垂直图例,并且给出的答案仍然不能提供完全令人满意的解决方案。对于多边形键字形,建议通过修改底层的 draw_key 函数来增加实际多边形字形和键边框之间的边距大小。但是,如果我想保留边框,例如黑色,这实际上不起作用。

当使用其他几何图形(例如,geom_line)时,我什至看不到如何增加字形和边框之间的边距 - 简要浏览一下其中使用的 draw_key 函数ggplot2:::GeomLine(它不使用导出的 draw_key 函数),它我不清楚在哪里修改它。

所以,我的问题是,是否有一种方法可以改变键字形之间的实际空间,从而允许保留边框(例如,颜色 =“黑色”),并且不增加字形大小。

示例图:关键字形接触。

如果我要删除颜色,看起来好像字形间距更大的示例,但我想要与上面相同大小的关键字形,只是它们之间的空间。

GeomLine 中的底层 draw_key

reprex 包于 2021-12-29 创建(v2.0.1)

PS 这个问题是在回答这个有趣的问题时出现的

0 投票
1 回答
58 浏览

r - 当我修改一个重复的(复制的)Geom 对象时,这也会修改底层的原始 Geom。为什么?

当我修改复制的 Geom 对象的一部分时,这也会修改底层的原始 Geom。为什么?

(非常感谢用户 Stefan 通过评论我现在删除的上一个问题来确定这个问题)。

reprex 包(v2.0.1)创建于 2022-01-09

0 投票
1 回答
99 浏览

r - 如何为ggplot2中的新几何自动化图例?

我已经构建了ggplot2我正在调用的这个新几何图层geom_triangles(请参阅https://github.com/ctesta01/ggtriangles/),它根据美学绘制等腰三角形,包括三角形的高度x, y, z在哪里z,等腰三角形的底边有中点(x,y) 在图上。

我想要的是让geom_triangles()图层自动为三角形的高度和宽度提供图例组件,但我不知道该怎么做。

根据此参考资料,我了解到我可能需要调整对象draw_key中的参数ggproto StatTriangles,但我不确定我将如何做到这一点,而且似乎无法在网上找到如何做到这一点的示例。我一直在查看函数的源代码但我不确定如何在.ggplot2draw_keydraw_keyStatTriangles ggproto

第一个带有 mtcars、geom_triangles 和颜色图例的绘图示例

我能够做的是编写辅助函数(draw_geom_triangles_height_legend, draw_geom_triangles_width_legend)并使用patchwork, 和cowplot包来手动制作图例组件,并将它们与原始图组合在适当的网格中,但我想让这些图例组件自动生成。下面的代码也使用ggrepel包在图中添加文字标签。

使用 mtcars、geom_triangles 绘制的第二个图,添加了高度和宽度的图例组件

我正在寻找的是能够运行第一个绘图示例的代码并获得一个具有 3 个组件的图例,该组件类似于第二个绘图示例中的颜色/填充、高度和宽度图例组件。

不幸的是,辅助函数并不令人满意,因为目前必须依靠视觉估计图例height_scalewidth_scale组件是否正确。这是因为 lenged 由它们自己的对象产生draw_geom_triangles_height_legend并且draw_geom_triangles_width_legend是它们自己的ggplot对象,因此不一定与ggplot它们应该是图例的主要兴趣所在的坐标缩放系统相同。

我包含的两个地块都使用 7in x 8.5in 渲染ggsave

这是我的 RsessionInfo()