首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ggplot2:同时使用科学记数法和完整数字

ggplot2:同时使用科学记数法和完整数字
EN

Stack Overflow用户
提问于 2013-06-03 19:46:40
回答 1查看 1.3K关注 0票数 3

我有一个ggplot2图,直方图如下所示:

代码语言:javascript
运行
复制
  library("ggplot2")
  library("scales")
  df <- data.frame(test = rnorm(1000, 1000, 40000))
  p <- ggplot(df, aes(x = test)) + geom_histogram(colour="black", fill="#FF9999")
  # set themes, axes and labels
  p <- p + theme_minimal() + theme() + xlab("Distance travelled [km]") + ylab("Count of users") 


  # transformation
  p <- p + scale_x_log10(breaks = trans_breaks("log10", function(x) {10^x}),
                       labels = trans_format("log10", math_format(10^.x))
  )

  # plot
  p

输出:

我使用scales包将x轴标签显示为10的幂,但实际上,我希望将它们显示为十进制数字,只要数字低于10^4和10^-4,对于下面的图,这将提供以下轴标签

代码语言:javascript
运行
复制
100
1000
10^4
10^5

我如何在trans_format()中做到这一点,或者有其他更好的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-03 22:11:01

您可以使用ifelseidentitytrans_format之间进行分支

代码语言:javascript
运行
复制
f <- function (x) ifelse(log10(x)<4,identity(x),trans_format("log10",math_format(10^.x))(x))
> f(10^(1:6))
[[1]]
[1] 10

[[2]]
[1] 100

[[3]]
[1] 1000

[[4]]
10^`4`

[[5]]
10^`5`

[[6]]
10^`6`

p + scale_x_log10(breaks = trans_breaks("log10", function(x) {10^x}), labels=f)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16895972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档