我有一个用ggplot绘制的2D表面图,我正在对其着色以显示其三维尺寸的值。该数据在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
但是为了使内容尽可能清晰,我分两步进行了操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句