r - 为什么不只有一个统一的 `scale_fill` 函数?
问题描述
有人可以向我解释为什么需要不同的功能吗scale_fill_discrete
?scale_fill_continuous
(同样scale_color_*
)我知道某些颜色图只为离散数据定义,但对于可重用的绘图函数,我不断编写愚蠢的逻辑来检查填充(或颜色)变量是否是离散的以调用正确的scale_fill_*
函数。scale_fill_distiller
和相同scale_fill_brewer
。
如果连续数据请求离散颜色图选项,为什么我们不能合并这些函数并抛出错误?这已经在内部进行了检查,以在当前函数中抛出错误。
解决方案
我可以想到两个原因。
首先,这两个函数的默认值不同。 scale_fill_discrete
将默认为type = scale_fill_hue
,即在色轮周围均匀分布的颜色。 scale_fill_continuous
将默认为type = scale_fill_gradient
, 两个极端之间均匀分布的颜色。(还有第三个函数,scale_fill_binned
属于同一个家族。它也有不同的默认值。)
第二个原因是风格。如果你不喜欢默认值,你可以通过选项定义你自己的。但是离散和连续颜色集相同是没有意义的,因此您需要指定两个默认值。(它们被命名为"ggplot2.discrete.fill"
和"ggplot2.continuous.fill"
)。这是一种更简洁的风格,也有两个函数来使用这些选项,而不是一个更复杂的函数在它们之间进行选择。至少在ggplot2
.
推荐阅读
- php - 如何在我的列顶部显示数据标签?
- ruby - Ruby/Sinatra 没有从模块文件中传递变量
- paypal - 贝宝 .NET SDK
- rust - 如何在不单独分配堆上的每个项目的情况下创建拥有的特征对象的列表?
- android - Flutter:如何在 Flutter 中使图像的某些区域透明?
- linux - grep pdf文件中的内容并将其部分写入变量
- javascript - 如何使用javascript从arebic内容中删除空间
- c# - .NET Core 3.1 Worker 服务 - 在发布时设置 EnvironmentName
- javascript - 根据属性值删除对象数组中的重复项
- c# - 如何将所有双精度和字符串数据类型隔离到实例集合中