r - 如何在数学上转换 ggplot 中图例上的默认标签?
问题描述
我有一个用 ggplot 制作的二维曲面图,我正在对其进行着色以显示它的第三维值。该数据在 Z 方向上的范围很广,因此我在进行插值以进行绘图之前对其进行了对数转换。
我喜欢绘图算法为中断选择的默认选项。但是,这些中断的标签现在是日志值。
当前的着色代码是:
scale_fill_viridis(breaks = waiver(), labels = waiver())
waiver() 是底层算法使用默认值的标志。理想情况下,我想做类似的事情
scale_fill_viridis(breaks = waiver(), labels = sprintf("%.1f", 10^waiver()))
Error in 10^my_breaks : non-numeric argument to binary operator
但这会因错误而中断
如何在数学上将标签的默认值转换为对数转换之前的值?
解决方案
像这样的东西怎么样:
your_function <- function(x){sprintf("%.1f", 10^as.numeric(x))}
labels = scales::trans_format("identity", your_function)
your_function
将取 的倒数log10
,有效地撤消对数变换。 scales::trans_format
将通过应用它传递给它的任何函数来重新格式化给定的标签,在这种情况下your_function
。
您当然可以在内部定义重新格式化功能,trans_format
但为了使事情尽可能清晰,我分两步完成。
推荐阅读
- nao-robot - 如何在对话中读取语音输入?奇聊
- javascript - npm 运行脚本 < 出乎意料
- html - 忽略嵌入式 DIV 的 CSS 边距
- groovy - 如何从 SOAPUI 中的 Json 响应中提取子字符串值
- r - 创建日期向量,更改因子和格式
- sql-server - 为 Microsoft SQL Server Reporting Services 启用 Kerberos
- ruby-on-rails - 定义 has_rich_text 方法时,__FILE__ 和 __LINE__ + 1 的作用是什么?
- google-maps - 地图空白反应原生
- javascript - js中的hello消息功能
- python - 根据最多三列创建分类变量