R ggplot:更改Grouped Boxplot Median行

时间:2016-08-30 15:19:22

标签: r ggplot2 boxplot

我绘制了分组的箱形图,现在我想用白线代替标准的黑色中线,同时保持边框为另一种颜色。我按照网站Minimalist Boxplots上的说明操作,因为我非常喜欢他们的风格。

他们使用命令stat_summary(geom = "crossbar", width=0.65, fatten=0, color="white", fun.data = function(x){ return(c(y=median(x), ymin=median(x), ymax=median(x))) })。 该命令适用于简单的箱形图: enter image description here

但是现在我试图在我的分组箱图上使用它不再起作用了(缺少白色中线):

enter image description here

以下是我复制数据的代码:

Data <- data.frame(
  W = sample(1:100),
  M = sample(1:100),
  A = sample(1:100),
  O = sample(1:100),
  Type = sample(c("1", "2", "3", "4", "5")))

我的剧本:

Data_Boxplot <- melt(Data,id.vars='Type', measure.vars=c('W','M','A', 'O'))
Boxplots <- ggplot(Data_Boxplot, aes(Type, value, group=variable)) +
  geom_boxplot(outlier.colour = NULL, aes(color=variable, fill=variable)) + 
  stat_summary(geom = "crossbar", width=0.65, fatten=0, color="white", 
               fun.data = function(x){c(y=median(x), ymin=median(x), ymax=median(x))})
Boxplots

我需要改变什么?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:8)

您只为y映射了geom_boxplotvariable。应该为所有人映射在地理位置之间共享的变量。在这种情况下,您还需要按ggplot(Data.m, aes(Type, value, group=variable) + geom_boxplot(outlier.colour = NULL, aes(color=variable, fill=variable)) + stat_summary(geom = "crossbar", width=0.65, fatten=0, color="white", fun.data = function(x){c(y=median(x), ymin=median(x), ymax=median(x))}) 分组。

geom_boxplot

我没有测试,因为你没有提供数据。

编辑:

好的,既然我们有一个很好的数据示例,我们可以看到正在发生的事情。

实际上我错过了两个问题。两者都是因为fill会因stat_summary variable而自动为您解决一些问题。所以我们必须手动完成它们。

首先,我们希望对Typeinteraction进行分组,我们可以使用position_dodge函数执行此操作。

其次,箱形图被自动躲避(即在组内移开),而水平线不是。我们将使用p <- position_dodge(0.8) ggplot(Data_Boxplot, aes(Type, value, group = interaction(variable, Type))) + geom_boxplot(aes(color = variable, fill = variable), outlier.colour = NULL, position = p) + stat_summary(geom = "crossbar", width = 0.6, fatten=0, color="white", position = p, fun.data = function(x){c(y=median(x), ymin=median(x), ymax=median(x))}) + theme_minimal() 定义我们的定位,并将其应用于两个geoms。将它应用于两者是使它们完全对齐的最简单方法。我们最终得到:

  "devDependencies": {
    "grunt": "^1.0.0",
    "grunt-cli": "0.1.6",
    "grunt-contrib-clean": "~0.4.0",
    "grunt-contrib-connect": "~0.6.0",
    "grunt-contrib-csslint": "*",
    "grunt-contrib-jshint": "~0.7.0",
    "grunt-contrib-qunit": "~0.3.0",
    "grunt-parallel-behat": "*",
    "grunt-qunit-cov": "~0.3.2",
    "grunt-qunit-istanbul": "*",
    "grunt-qunit-junit": "^0.1.1",
    "grunt-cli": "0.1.6",
    "gulp": "github:gulpjs/gulp#4.0",
    "gulp-apidoc": "^0.2.3",
    "gulp-documentation": "^2.2.0",
    "gulp-eslint": "^2.0.0",
    "gulp-istanbul": "^0.10.3",
    "gulp-jscs": "^4.0.0",
    "gulp-mocha": "^2.2.0",
    "gulp-nodemon": "^2.0.6",
    "istanbul": "^0.4.4",
    "mocha": "^3.0.2",
    "require-dir": "^0.3.0",
    "should": "^8.3.0",
    "supertest": "^1.2.0"
  }

enter image description here