首页 > 解决方案 > 在 ggplot 中自定义对数转换标签

问题描述

嘿,

我创建了一个具有不同类别的条形图。所有类别都以相同的规模衡量,但每个类别的价值处于不同的水平。最好是通过 log10 转换 y 比例以显示所有类别。

使用此代码非常容易:

scale_y_continuous(trans = log10_trans(),
                 breaks = trans_breaks("log10", function(x) 10^x),
                 labels = label_number_auto())

现在我想自定义标签。因为我显示了不同类别的支出,所以可以用“0.001 Mio€”、“0.01 Mio€”、“0.1 Mio€”、“1 Mio€”、“10 Mio€”等标记 y 轴而不是 1000,10000,100000,1000000,10000000 等等。

如何更改标签?

#labels = paste(label_number_auto()/1000000,"Mio€")

不起作用。

谢谢你的任何提示。

如果需要,我会创建一个示例:-)

标签: rggplot2yaxis

解决方案


对标签使用格式化函数并“手动”将它们转换为对数刻度:

ggplot(diamonds, aes(color, log10(price))) + 
    geom_boxplot() +  
    scale_y_continuous(labels = function(x) paste(round(10^x)/1000, "Tsd. €"))

修正量表

用 ggplot 3.2.0 测试。

通过不加修改的绘图可以看出两个比例相同的事实:

ggplot(diamonds, aes(color, price)) + 
    geom_boxplot()

原始比例


推荐阅读