Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2:使用不同的x值(geom_功能区)填充两行之间的空间并格式化日志轴标签_R_Ggplot2_Ribbon_Logarithm_Axis Labels - Fatal编程技术网

R ggplot2:使用不同的x值(geom_功能区)填充两行之间的空间并格式化日志轴标签

R ggplot2:使用不同的x值(geom_功能区)填充两行之间的空间并格式化日志轴标签,r,ggplot2,ribbon,logarithm,axis-labels,R,Ggplot2,Ribbon,Logarithm,Axis Labels,我试图填充两条曲线之间的空间,但是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), M

我试图填充两条曲线之间的空间,但是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。有没有办法像这样格式化轴?
提前谢谢你的帮助。霍莉

这可能会帮助你开始,尽管我还不完全确定你想要什么:

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()

这可能会帮助您开始,尽管我仍然不完全确定您的目标:

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()

我猜她想让深度下降

  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()
图表看起来不同,因为我在整个会话中使用了自定义主题


我猜她想让深度下降

  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()
图表看起来不同,因为我在整个会话中使用了自定义主题


你能把它复制一下吗?我道歉。我希望这能让事情变得容易一点?我不知道如何调用列表中的数据,因此您可能必须将其保存到csv文件中-抱歉…这肯定解决了问题,非常感谢!!!你刚刚结束了无数小时的挫折。Holly你能让它重现吗?我道歉。我希望这能让事情变得容易一点?我不知道如何调用列表中的数据,因此您可能必须将其保存到csv文件中-抱歉…这肯定解决了问题,非常感谢!!!你刚刚结束了无数小时的挫折。HollyYes这正是我想要的,非常感谢你的帮助!HollyYes这正是我想要的,非常感谢你的帮助!冬青