ggstance(),一起绘制箱线图和密度图-R

我正在尝试为数据框中的每个数字变量做一个箱线图和一个密度图。我正在调整this解决方案来解决我的问题。但是,我正在尝试为数据框中的每个数字变量绘制图表(上面的解决方案中仅针对一个变量):

df %>% 
  select_if(is.numeric) %>%
  gather(na.rm=TRUE) %>%
  ggplot(aes(x = value,y = -0.5)) +
  geom_boxploth() +
  geom_density(aes(x = value),inherit.aes = FALSE) +
  facet_wrap(~key,scales = 'free')

主要问题在于每个变量的标度。我在free_x的{​​{1}}参数中尝试了free_yfreescales,它们全都给我带来了一些美学上的问题:

  • facet_wrap():箱形图的宽度在图中发生变化,使其变得凌乱。
  • scales="free":情节几乎是完美的,唯一的问题 依赖于某些密度图不可读。
  • scales="free_x":最糟糕的一个。

由于数字变量的范围非常不同,因此x轴需要自由,以便绘制可理解的箱线图。但是,如果我固定y轴(使用scales="free_y",则密度图(例如scales="free_x"的峰)将显示为固定轴上从0到1的直线({{ 1}}变量)。

我获得的最接近的解决方案是使用0.1,但是我无法使密度图更具可读性。

有什么建议吗?

数据(100行):

air_temperature
ooxiaoping 回答:ggstance(),一起绘制箱线图和密度图-R

geom_density(),或更准确地说stat_density()也可以使计算机具有美学价值。使用这些,您可以设置geom_density(aes(x = value,y = stat(density)))以获得统一的内核密度估计值:

df %>% 
  select_if(is.numeric) %>%
  gather(na.rm=TRUE) %>%
  ggplot(aes(x = value,y = -0.5)) +
  geom_boxploth() +
  geom_density(aes(x = value,y = stat(scaled)),inherit.aes = FALSE) +
  facet_wrap(~key,scales = 'free')

enter image description here

这可以解决轴的问题。

值得注意的是,由于this pull request的合并,将来我们似乎不再需要更多的ggstance。

本文链接:https://www.f2er.com/3149357.html

大家都在问