相关疑难解决方法(0)

Draw Lines between Facets of facet_grid

Intro

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

Research

ggsignif

I know that there is ggsignif package which does this for all non faceted plots. There are answers which try to circumvent this …

plot r ggplot2 gtable facet-grid

11
推荐指数
2
解决办法
392
查看次数

如何在组合的ggplots上添加线,从一个图上的点到另一个图上的点?

我需要在ggplot中重现InDesign中生成的图,以实现可重现性。

在此特定示例中,我将两个图合并到一个合成图中({patchwork}为此我使用了程序包)。

然后,我需要将连接一个图上关键点的线与底部图上的对应点重叠。

这两个图是从相同的数据生成的,具有相同的x轴值,但具有不同的y轴值。

我已经在Stack Overflow上看到了这些示例,但是这些示例处理的是跨构面的绘制线,在这里尝试跨单独的图绘制线时,这在这里不起作用:

我尝试了几种方法,到目前为止,我最接近的方法是:

  1. 使用{grid}package 添加带有grobs的行
  2. 使用将第二个图转换为gtable {gtable},并将面板的剪辑设置为off,以便我可以将线向上延伸到该图的面板之外。
  3. 再次将绘图合并为一张图像{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)

plot r ggplot2 gtable

10
推荐指数
1
解决办法
241
查看次数

ggplot2添加跨越facet边缘的注释

我想绘制一个矩形注释,它将跨越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对象,这就是为什么我要避免任何复杂的网格东西,直到这一点.

r ggplot2 ggforce

8
推荐指数
1
解决办法
248
查看次数

ggplot,在facet上绘制多条线

我使用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变量,所以有没有办法可以纠正范围?非常感谢.

r ggplot2

6
推荐指数
2
解决办法
1197
查看次数

如何用R复制这个情节?

我需要以与图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)

在此输入图像描述

r ggplot2 lattice

3
推荐指数
1
解决办法
347
查看次数

标签 统计

ggplot2 ×5

r ×5

gtable ×2

plot ×2

facet-grid ×1

ggforce ×1

lattice ×1