问题标签 [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.
r - `geom_abline()` 如何不影响 x 和 y 比例?
有谁知道里面的哪个参数geom_abline()
不影响 x 和 y 比例?
draw_panel()
w/i函数GeomAbline
获取底层的“范围”,但该线通常应该位于原始比例之外:
我的猜测是参数/函数ggplot2::StatIdentity
并ggplot2::PositionIdentity
设置ggplot2:layer()
在geom_abline()
. 但我不明白这是如何工作的?我的动机是写一个新geom_*
的也不影响 x 和 y 比例。
r - 对于新的“ggproto”,需要使用“extra_params”指定哪些参数
出于好奇,是否有任何文档说明需要在对象内部定义哪些extra_params
参数ggplot2::ggproto
?
我最初的想法是它可能是在 a 的参数中定义的参数params
,ggplot2::layer()
但事实并非如此。
例如,如果您查看 的extra_params
,GeomRibbon
我猜想只有未明确包含在相应draw_group()
函数调用中的参数必须包含在内。例如GeomRibbon
:
extra_params
包括"orientation"
,这可能由params$extra_params
w/i解决setup_data()
,- while
extra_params
不包含"outline.type"
,直接交给函数调用draw_group()
。
r - 修改垂直图例中关键字形之间的间距,同时保持关键字形边框
作为这个著名线程的后续行动。我决定提出一个新问题,因为这更专门针对垂直图例,并且给出的答案仍然不能提供完全令人满意的解决方案。对于多边形键字形,建议通过修改底层的 draw_key 函数来增加实际多边形字形和键边框之间的边距大小。但是,如果我想保留边框,例如黑色,这实际上不起作用。
当使用其他几何图形(例如,geom_line)时,我什至看不到如何增加字形和边框之间的边距 - 简要浏览一下其中使用的 draw_key 函数ggplot2:::GeomLine
(它不使用导出的 draw_key 函数),它我不清楚在哪里修改它。
所以,我的问题是,是否有一种方法可以改变键字形之间的实际空间,从而允许保留边框(例如,颜色 =“黑色”),并且不增加字形大小。
示例图:关键字形接触。
如果我要删除颜色,看起来好像字形间距更大的示例,但我想要与上面相同大小的关键字形,只是它们之间的空间。
GeomLine 中的底层 draw_key
由reprex 包于 2021-12-29 创建(v2.0.1)
PS 这个问题是在回答这个有趣的问题时出现的
r - 当我修改一个重复的(复制的)Geom 对象时,这也会修改底层的原始 Geom。为什么?
当我修改复制的 Geom 对象的一部分时,这也会修改底层的原始 Geom。为什么?
(非常感谢用户 Stefan 通过评论我现在删除的上一个问题来确定这个问题)。
由reprex 包(v2.0.1)创建于 2022-01-09
r - 如何为ggplot2中的新几何自动化图例?
我已经构建了ggplot2
我正在调用的这个新几何图层geom_triangles
(请参阅https://github.com/ctesta01/ggtriangles/),它根据美学绘制等腰三角形,包括三角形的高度x, y, z
在哪里z
,等腰三角形的底边有中点(x,y) 在图上。
我想要的是让geom_triangles()
图层自动为三角形的高度和宽度提供图例组件,但我不知道该怎么做。
根据此参考资料,我了解到我可能需要调整对象draw_key
中的参数ggproto
StatTriangles
,但我不确定我将如何做到这一点,而且似乎无法在网上找到如何做到这一点的示例。我一直在查看函数的源代码,但我不确定如何在.ggplot2
draw_key
draw_key
StatTriangles
ggproto
我能够做的是编写辅助函数(draw_geom_triangles_height_legend
, draw_geom_triangles_width_legend
)并使用patchwork
, 和cowplot
包来手动制作图例组件,并将它们与原始图组合在适当的网格中,但我想让这些图例组件自动生成。下面的代码也使用ggrepel
包在图中添加文字标签。
我正在寻找的是能够运行第一个绘图示例的代码并获得一个具有 3 个组件的图例,该组件类似于第二个绘图示例中的颜色/填充、高度和宽度图例组件。
不幸的是,辅助函数并不令人满意,因为目前必须依靠视觉估计图例height_scale
和width_scale
组件是否正确。这是因为 lenged 由它们自己的对象产生draw_geom_triangles_height_legend
并且draw_geom_triangles_width_legend
是它们自己的ggplot
对象,因此不一定与ggplot
它们应该是图例的主要兴趣所在的坐标缩放系统相同。
我包含的两个地块都使用 7in x 8.5in 渲染ggsave
。
这是我的 RsessionInfo()