2016-04-07 10 views
2

Я пытаюсь продемонстрировать тип почвы (почвенный столб) на разных глубинах в земле с использованием площадок. Однако, поскольку интервал выборки не является согласованным, между образцами также имеются промежутки.Как сделать полевые диаграммы в пределах одной колонны, чтобы представить почвенный столбец

Мои вопросы заключаются в следующем:

  1. Можно ли поставить участки коробки в пределах одной и той же колонке? т.е. все полевые диаграммы в 1 прямой колонке

  2. Можно ли пометить метки и отметки оси X при использовании ggdraw? Я попытался удалить его при использовании графика, но появляется снова, когда я использую ggdraw.

Мой код выглядит следующим образом:

SampleID <- c("Rep-1", "Rep-2", "Rep-3", "Rep-4") 
From <- c(0,2,4,9) 
To <- c(1,4,8,10) 
Mid <- (From+To)/2 
ImaginaryVal <- c(1,1,1,1) 
Soiltype <- c("organic", "silt","clay", "sand") 
df <- data.frame(SampleID, From, To, Mid, ImaginaryVal, Soiltype) 

plot <- ggplot(df, aes(x=ImaginaryVal, ymin=From, lower=From,fill=Soiltype, 
      middle=`Mid`, upper=To, ymax=To)) + 
      geom_boxplot(colour= "black", stat="identity") +        scale_y_reverse(breaks = seq(0,10,0.5)) + xlab('Soiltype') +     ylab('Depth (m)') + theme(axis.text.x = element_blank(),     axis.ticks.x = element_blank()) 

ggdraw(switch_axis_position(plot + theme_bw(8), axis = 'x')) 

enter image description here

На рисунке я указал, что я хочу, используя красные стрелки и линии.

ответ

4

Вы можете использовать position = position_dodge() так:

plot <- ggplot(df, aes(x=ImaginaryVal, ymin=From, lower=From,fill=Soiltype, middle=Mid, upper=To, ymax=To)) + 
    geom_boxplot(colour= "black", stat="identity", position = position_dodge(width=0)) + 
    scale_y_reverse(breaks = seq(0,10,0.5)) + 
    xlab('Soiltype') + 
    ylab('Depth (m)') + 
    theme(axis.text.x = element_blank(), axis.ticks.x = element_blank()) 

enter image description here

редактировать: Я не думаю, что вам нужно cowplot вообще, если это то, что вы хотите, чтобы ваш участок выглядеть следующим образом:

enter image description here

ggplot(df, aes(x=ImaginaryVal, ymin=From, lower=From,fill=Soiltype, middle=Mid, upper=To, ymax=To)) + 
    geom_boxplot(colour= "black", stat="identity", position = position_dodge(width=0)) + 
    scale_y_reverse(breaks = seq(0,10,0.5)) + 
    xlab('Soiltype') + 
    ylab('Depth (m)') + 
    theme_bw() + 
    theme(axis.text.x = element_blank(), axis.ticks.x = element_blank()) + 
    xlab("") + 
    ggtitle("Soiltype") 
+0

О моя доброта. У меня нет слов, чтобы описать, насколько я счастлив и доволен своим ответом. Это полностью решило мою проблему. Большое спасибо @beetroot. – Rupesh

+0

Кроме того, есть ли способ удалить «средние» строки внутри каждого окна? – Rupesh

+1

Рад помочь, но, может быть, вам лучше использовать 'geom_rect' вместо' geom_boxplot'? попробуйте 'ggplot (df, aes (xmin = 1, xmax = 3, ymin = From, fill = Soiltype, ymax = To)) + geom_rect (color =" black ")' ... – beetroot