在 ggplot 中自定义对数转换标签

Customize logtransformed labels in ggplot

嘿,

我创建了一个包含不同类别的条形图。所有类别都在同一尺度上进行测量,但每个类别的价值处于不同的水平。最好是通过 log10 转换 y 比例以显示所有类别。

使用这段代码非常简单:

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

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

如何更改标签?

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

无效。

感谢您的任何提示。

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

V

对标签使用格式化函数并将它们转换为对数刻度"by hand":

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()