相关疑难解决方法(0)

在ggplot/R中改变每个面的轴标签格式器

我有一个数据框,随着时间的推移捕获了几个我希望可视化3x1方面的措施.但是,每个度量包含不同的单位/比例,这些单位/比例将受益于自定义转换和标签方案.

所以,我的问题是:如果不同方面的单位和比例不同,我如何指定自定义格式器或转换(即log10)到构面内的特定轴?

例如,假设我有数据:

df = data.frame(dollars=10^rlnorm(50,0,1), counts=rpois(50, 100))
melted.df = melt(df, measure.var=c("dollars", "counts"))
Run Code Online (Sandbox Code Playgroud)

如何将一个走在设置显示随用食指美元和计数2×1面labels=dollars,并scale_y_continuous(trans = "log10", ...)df$dollars数据?

谢谢!

r ggplot2 facets

24
推荐指数
1
解决办法
8521
查看次数

如何控制“facet_wrap()”中的轴刻度数?

我有一个用facet_wrap 创建的图形,可视化许多组的估计密度。有些组的方差比其他组小得多。这会导致某些面板的 x 轴无法读取。最小可重现示例:

library(tidyverse)
x1 <- rnorm(1e4)
x2 <- rnorm(1e4,mean=2,sd=0.00001)

data.frame(x=c(x1,x2),group=c(rep("1",length(x1)),rep("2",length(x2)))) %>%
  ggplot(.) + geom_density(aes(x=x)) + facet_wrap(~group,scales="free")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

解决这个问题的明显方法是增加图形大小,以便一切都变得可读。然而,面板太多,无法使其成为有用的解决方案。我最喜欢的解决方案是控制轴刻度数,例如在所有 x 轴上仅允许两个刻度。有办法做到这一点吗?


根据建议进行编辑:

添加+ scale_x_continuous(n.breaks = 2)看起来应该完全符合我的要求,但实际上并没有:

在此输入图像描述

按照建议问题Change number of Breaks using facet_grid in ggplot2中的答案,我最终得到两个轴刻度,但不希望有很多小数点:

equal_breaks <- function(n = 3, s = 0.5, ...){
  function(x){
    # rescaling
    d <- s * diff(range(x)) / (1+2*s)
    seq(min(x)+d, max(x)-d, length=n)
  }
}

data.frame(x=c(x1,x2),group=c(rep("1",length(x1)),rep("2",length(x2)))) %>%
  ggplot(.) + geom_density(aes(x=x)) + facet_wrap(~group,scales="free")  + scale_x_continuous(breaks=equal_breaks(n=3, s=0.05), expand = c(0.05, 0))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r facet ggplot2 facet-wrap

6
推荐指数
1
解决办法
2476
查看次数

标签 统计

ggplot2 ×2

r ×2

facet ×1

facet-wrap ×1

facets ×1