【问题标题】:plotting a boxplot and a line plot in the same graph using ggplot使用 ggplot 在同一图表中绘制箱线图和折线图
【发布时间】:2015-10-14 04:33:35
【问题描述】:

我想在 ggplot 中为同一图中的箱线图和线图创建一个图。我有一个如下所示的数据框:

    Lambda  |  means   | theorMean 
1    0.1      10.07989       10     
2    0.1      10.55681       10     
3    0.1      10.26660       10   
4    0.1      10.29234       10    
5    0.1      10.07754       10      
 ...

means 是样本均值,理论均值是theorMeans。我想通过箱线图绘制样本均值的分布,而理论均值使用直线。

这就是我目前所拥有的......

library(ggplot2)
library(scales)

p <- ggplot(summ, aes(x=factor(Lambda), y=means)) +
     geom_boxplot() +
     geom_line(data=summ, aes(x=log10(Lambda), y=means))

问题在于,对于箱形图或小提琴图,我需要使用 x 轴作为因子。另一方面,我需要 x 轴是一个数字。我基本上想在我生成的箱形图中拟合一条理论线。我怎么可能做到这一点?

【问题讨论】:

  • 我不确定我是否误解了,但如果问题只是 lambda 类,您可以简单地从 ggplot() 中删除 aes(x=factor(Lambda), y=means) 并将其放在 geom_boxplot() 内。或者,您可以使用inherit.aes = FALSE 阻止geom_lineaes 的继承。如果我误解了某些内容,请告诉我。
  • 嗯,我想把两个地块对齐。事实上,我什至不需要data.frame 中的thermion。我可以简单地绘制(lambda vs.1/lambda)。只是 lambda 最初是对数缩放的。因此,我无法将未按对数缩放的因素排列成一行。我尝试了您对ggplot(summ)+geom_boxplot(aes(x=factor(Lambda), y=means)) + geom_line(aes(x=Lambda, y=means)) 的建议,但没有帮助。不过感谢您的建议!

标签: r plot ggplot2


【解决方案1】:

这应该可以解决问题:

library(ggplot2)

summ$Lambda <- log10(summ$Lambda)

ggplot(summ, aes(x=factor(Lambda), y=means)) +
  geom_boxplot() +
  geom_line(inheret.aes = FALSE, aes(x=factor(Lambda), y=means, group = 1), color = "blue") +
  ylab("Mean") +
  xlab("Lambda (Log10)") +
  scale_x_discrete(labels = round(summ$Lambda,2)) +
  theme(  axis.ticks.y = element_blank()
        , axis.text.x = element_text(angle = 45, hjust = 1)
  ) 

产量:


测试数据:

e <- 2.7182818284590452353602874713527  
summ <- data.frame("Lambda" = seq(0.01, 0.9, by = 0.0287097))

list <- c()
for(x in 1:31){
  t <- e^-(x/10)*15
  list[x] <- t
}
summ$means <- list
summ$Lambda <- log10(summ$Lambda)

This was helpful here.

【讨论】:

  • 非常感谢。我实际上使用了你的组概念并做了这个:` theoriticalMeans
猜你喜欢
  • 2016-04-06
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多