小编Meg*_*ett的帖子

如何在组合的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
查看次数

Unnest 或 unchop 包含不同长度列表的数据帧

我有一个包含多个列的数据框,其中包含我想要unnest(或unchop)的列表列。但是,它们的长度不同,因此产生的错误是Error: No common size for...

这是一个 reprex 来显示哪些有效,哪些无效。

library(tidyr)
library(vctrs)

# This works as expected
df_A <- tibble(
  ID = 1:3,
  A = as_list_of(list(c(9, 8, 5), c(7,6), c(6, 9)))
)

unchop(df_A, cols = c(A))
# A tibble: 7 x 2
     ID     A
  <int> <dbl>
1     1     9
2     1     8
3     1     5
4     2     7
5     2     6
6     3     6
7     3     9

# This works as expected as the lists are the …
Run Code Online (Sandbox Code Playgroud)

r unnest tidyr

7
推荐指数
1
解决办法
1119
查看次数

使用对象而不是数组将 R 数据帧嵌套到 JSON

我需要将数据帧转换为 JSON。数据框中有几个嵌套的数据框作为变量来转换为 JSON。

但是,当转换为 JSON 时,我需要将下面描述的数据Values1作为对象({}仅包含在 中)而不是数组(包含在 中[])。

下面的代码是一个表示,显示我当前的工作流程和问题。

library(dplyr)
library(tidyr)
library(jsonlite)

df1 <- data.frame(name = c("a", "b", "c"),
                 v = c(1, 2, 3),
                 w = c(10, 20, 30)) %>%
  group_by(name) %>%
  nest_legacy(.key = "Values1")

df2 <- data.frame(name = c("a", "b", "c"),
                  x = c(5, 10, 15),
                  y = c(100, 200, 300),
                  z = c(1000, 2000, 3000)) %>%
  group_by(name) %>%
  nest_legacy(.key = "Values2")

df3 <- df1 %>%
  left_join(df2)

json <- toJSON(df3, dataframe = "rows", …
Run Code Online (Sandbox Code Playgroud)

json nested r dataframe jsonlite

6
推荐指数
1
解决办法
1082
查看次数

标签 统计

r ×3

dataframe ×1

ggplot2 ×1

gtable ×1

json ×1

jsonlite ×1

nested ×1

plot ×1

tidyr ×1

unnest ×1