I want to draw lines between a faceted ggplot. The main goal is to connect those measurements with a line which we want to test against. So basically I want to insert some kind of significance bars inside and between the facets of a ggplot boxplot (or any kind of plot for that matter).
I know that there is ggsignif
package which does this for all non faceted plots.
There are answers which try to circumvent this …
我需要在ggplot中重现InDesign中生成的图,以实现可重现性。
在此特定示例中,我将两个图合并到一个合成图中({patchwork}
为此我使用了程序包)。
然后,我需要将连接一个图上关键点的线与底部图上的对应点重叠。
这两个图是从相同的数据生成的,具有相同的x轴值,但具有不同的y轴值。
我已经在Stack Overflow上看到了这些示例,但是这些示例处理的是跨构面的绘制线,在这里尝试跨单独的图绘制线时,这在这里不起作用:
我尝试了几种方法,到目前为止,我最接近的方法是:
{grid}
package 添加带有grobs的行{gtable}
,并将面板的剪辑设置为off,以便我可以将线向上延伸到该图的面板之外。{patchwork}
。问题出在最后一步,因为x轴现在不再像添加线并将剪辑设置为off之前那样对齐(请参见代码示例)。
我也曾尝试用相结合的情节ggarrange
,{cowplot}
并{egg}
与{patchwork}
来自最接近的一次。
以下是我尝试创建的最佳最小reprex的尝试,但仍在捕捉我想要实现的细微差别。
library(ggplot2)
library(dplyr)
library(tidyr)
library(patchwork)
library(gtable)
library(grid)
# DATA
x <- 1:20
data <- data.frame(
quantity = x,
curve1 = 10 + 50*exp(-0.2 * x),
curve2 = 5 + 50*exp(-0.5 * x),
profit = c(seq(10, 100, by = 10),
seq(120, -240, by = -40))
)
data_long <- data %>% …
Run Code Online (Sandbox Code Playgroud) 我想绘制一个矩形注释,它将跨越ggplot中的facet边框.
library(ggplot2)
myPlot <- ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_grid(class ~ .)
# add annotation
myPlot +
annotate("rect", xmin = 3, xmax = 4, ymin = -Inf, ymax = Inf, fill = "green", alpha = 1/5)
Run Code Online (Sandbox Code Playgroud)
到目前为止我所拥有的:
我想绘制一个横跨小平面边缘的大矩形,如下所示:
有没有办法用内置ggplot2
代码执行此操作或使用ggforce
或者我必须搞乱grid
?我理想的用例仍然允许我myPlot
作为一个ggplot对象,这就是为什么我要避免任何复杂的网格东西,直到这一点.
我使用ggplot2 facet在一列中绘制了两个面板,并希望在x = 4和8的面板上添加两条垂直线.以下是代码:
library(ggplot2)
library(gtable)
library(grid)
dat <- data.frame(x=rep(1:10,2),y=1:20+rnorm(20),z=c(rep("A",10),rep("B",10)))
P <- ggplot(dat,aes(x,y)) + geom_point() + facet_grid(z~.) + xlim(0,10)
Pb <- ggplot_build(P);Pg <- ggplot_gtable(Pb)
for (i in c(4,8)){
Pg <- gtable_add_grob(Pg, moveToGrob(i/10,0),t=8,l=4)
Pg <- gtable_add_grob(Pg, lineToGrob(i/10,1),t=6,l=4)
}
Pg$layout$clip <- "off"
grid.newpage()
grid.draw(Pg)
Run Code Online (Sandbox Code Playgroud)
上面的代码修改自:ggplot,跨越facet的点之间的绘制线.和.
这个图有两个问题.首先,只显示了一条垂直线.它似乎moveToGrob
只工作了一次..其次,显示的线在x = 4时并不准确.我没有找到Pb$panel$ranges
变量,所以有没有办法可以纠正范围?非常感谢.
我需要以与图1所示相同的格式制作几个时间序列图.我对格式本身感兴趣.
我将非常感谢你的帮助.
这是一个模拟数据的最小例子
set.seed(1234)
nobs<-50
x<-rnorm(nobs,0,10)
t<-seq(1,nobs)
data<-ts(20+x+t, freq=4, start=c(2004,1))
par(family="serif")
plot(data, lwd=2, col="blue4", ylab="Millions")
title(main="Gráfico 1. Evolución del ...")
legend(2010,10,"GDP", col="blue4",lwd=2)
abline(lm(data~t), lwd=2, col="red") # This does not work
Run Code Online (Sandbox Code Playgroud)