2016-04-07 7 views
2

Toprak paftalarını kullanarak topraktaki farklı derinliklerde zemin türünü (zemin sütunu) göstermeye çalışıyorum. Bununla birlikte, örnekleme aralığı tutarlı olmadığından, örnekler arasında boşluklar da vardır.Toprak kolonunu temsil etmek için aynı sütun içinde kutu çizimleri nasıl yapılır

  1. aynı sütun içinde kutu araziler koymak mümkün mü şu şekildedir:

    Benim sorulara

    nelerdir? diğer bir deyişle 1 düz bir sütun içinde, tüm kutu araziler

  2. ggdraw kullanıldığında x-ekseni etiketleri ve keneler kaldırmak mümkün mi? Çizim kullanırken kaldırmaya çalıştım, ancak ggdraw kullandığımda yeniden görünür.

Benim kod şöyle görünür:

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

İstediğimi ben işaret vardır resimde, kırmızı okları ve çizgileri kullanarak.

cevap

4

Öyle gibi position = position_dodge() kullanabilirsiniz:

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

düzenlemek: Bu size arsa gibi görünmesini istediğimizi olup olmadığını, hiç cowplot gerek yoktur:

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

Aman Tanrım. Cevabımla ne kadar mutlu ve memnun olduğumu anlatacak sözüm yok. Bu tamamen benim problemimi çözdü. Çok teşekkürler @beetroot. – Rupesh

+0

Ayrıca, her kutu içindeki "orta" satırları kaldırabilmemizin bir yolu var mı? – Rupesh

+1

Yardım etmekten memnun oldum, ama belki de geom_boxplot yerine geom_rect kullanmanız daha iyi olur mu? ggplot (df, aes (xmin = 1, xmax = 3, ymin = Kimden, dolgu = Soiltype, ymax = Kime)) + geom_rect (color = "siyah") '... – beetroot

İlgili konular