2

我试图填充两条曲线之间的空间,但是 geom_ribbon 使用不同的 y 值而不是 x 值。我的 y 轴是深度,所以我真的不想交换轴。有没有办法做到这一点?这是我的数据集的示例:

Statsrep <- structure(list(Depth = c(34L, 74L, 114L, 164L, 204L, 264L, 304L, 344L, 384L, 424L, 
464L, 504L, 554L), Min = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), Max = c(38, 105, 86, 44, 68, 
155, 160, 68, 120, 1670, 178, 110, 84), Average = c(5.64, 12.08, 17.42, 6.5, 11.59, 11.09, 10.1, 
9.09, 8.08, 38.96, 15.94, 6.53, 13.21), Mode = c(2,2,3,2,6,2,2,2,2,2,2,2,2)), .Names = 
c("Depth", "Min", "Max", "Average", "Mode"), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 
10L, 11L, 12L, 13L), class = "data.frame")
Statsrep

我目前使用的代码是:

Statsrep <- read.csv(file="filename.csv", header=TRUE, sep=" ")
p1 <- ggplot(data = Statsrep, aes(xmin=Min, xmax=Max, y=Depth)) +
geom_ribbon(aes(fill="#CCCCCC"))
p1 <- p1 + coord_trans(x = "log10") + 
scale_x_continuous(breaks=c(1, 10, 100, 1000, 1500)) +
ylim(600,0)
p1 <- p1 + layer(geom = "path")
p1 + xlab("GRAINSIZE / mm")
p1 + ylab("DEPTH / m")

另外,我想自定义我的日志 x 轴,以便显示 1、10、100、1000 个标签并且等距显示,类似于日志坐标纸。此代码仅显示 100、1000、1500,它们在轴的右侧聚集在一起。有没有办法像这样格式化轴?感谢您提前提供任何帮助。冬青

4

2 回答 2

2

我猜她希望深度向下

  ggplot(data = Statsrep, aes(ymin=Min, ymax=Max, x=Depth, y = Average)) +
  geom_ribbon(alpha = 0.5) + 
  geom_line(aes(group = 1)) +
  scale_y_log10("GRAINSIZE / mm", breaks=c(1, 10, 100, 1000)) +
  scale_x_reverse("DEPTH / m", limits = c(600,0)) + 
  coord_flip()

该图看起来不同,因为我在整个会话中使用自定义主题。

在此处输入图像描述

于 2012-08-16T19:08:46.797 回答
2

这可能会帮助您入门,尽管我仍然不完全确定您在追求什么:

p1 <- ggplot(data = Statsrep, aes(ymin=Min, ymax=Max, x=Depth,y = Average)) +
        geom_ribbon(alpha = 0.5) + 
        geom_line(aes(group = 1)) +
        scale_y_log10() + 
        coord_flip()

在此处输入图像描述

于 2012-08-16T18:56:49.947 回答