gpt4 book ai didi

r - 如何将 y 轴更改为美元格式并避免使用科学记数法?

转载 作者:行者123 更新时间:2023-12-02 16:39:52 25 4
gpt4 key购买 nike

我正在尝试学习如何将美元格式分配给 Y 轴并避免使用科学记数法。我有 options(scipen = 999)

  ggplot(diamonds, aes(y = cut_width(price, 2000, boundary = 0), x = carat)) +
geom_boxplot(varwidth = TRUE) +
scale_y_continuous(dollar_format()) +
xlab("Carat") +
ylab("Price")

以上返回:错误:提供给连续刻度的离散值。我曾尝试通过删除 cut_width 和简化情节来修改代码,但无济于事。我错过了什么?谢谢!

最佳答案

这不起作用的原因是因为 cut_width 返回一个因子而不是一个数字。因此 scales::dollar_format 无法工作,因为它不是数字。此外,您不能将 _scale_continuous 用作因子。

这是一种使用 dig.lab = 的方法,然后使用 stringr 中的 str_replace_all 重新格式化 y 轴标签。

我们需要 dig.lab = 来防止科学记数法。请参阅 help(cut_width)

如您所知,我们可以要求 ggplot 使用一个函数来转换 y 轴标签,因此我们将利用这一点并定义一个匿名函数来在字符串中进行一些替换。使用 stringr::str_replace_all,我们可以提供 pattern = replacement 对的命名向量。因此,我们将 ([ 替换为 $,将 , 替换为 - $,和 ] 什么都没有。我们需要使用 \\ 来转义特殊的正则表达式字符。

library(ggplot2)
library(stringr)
ggplot(diamonds, aes(y = as.factor(cut_width(price, 2000, boundary = 0, dig.lab=10)), x = carat)) +
geom_boxplot(varwidth = TRUE) +
scale_y_discrete(labels = function(x) str_replace_all(x, regex(c("[\\(\\[]" = "$", "," = " - $", "\\]" = "")))) +
xlab("Carat") +
ylab("Price")

enter image description here

关于r - 如何将 y 轴更改为美元格式并避免使用科学记数法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61918650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com