将 ggplotly 和 ggplot 与拼凑在一起?

Posted

技术标签:

【中文标题】将 ggplotly 和 ggplot 与拼凑在一起?【英文标题】:Combine ggplotly and ggplot with patchwork? 【发布时间】:2020-08-17 19:50:53 【问题描述】:

是否可以将 ggplotly 和 ggplot 拼凑在一起?

示例

这会并排显示两个图

library(ggplot2)
library(plotly)
library(patchwork)

a <- ggplot(data.frame(1), aes(X1)) + geom_bar()
b <- ggplot(data.frame(1), aes(X1)) + geom_bar()
a + b

但是如果我们将一个转换为 ggplotly,就会出错

b  <- ggplotly(b)
a + b
Error: Can't add `b` to a ggplot object.
Run `rlang::last_error()` to see where the error occurred.

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

虽然有可能,但维护者表示它超出了当前计划

https://github.com/thomasp85/patchwork/issues/70

【讨论】:

【参考方案2】:

Plotly 具有 subplot 函数将多个绘图组合在一起:

library(ggplot2)
library(plotly)

df1 <-data.frame(x=1:10, y=1:10)
df2 <- data.frame(x=10:1, y=1:10)

p1<-ggplot(df1, aes(x, y)) +geom_point()
fig1<-ggplotly(p1)

p2<-ggplot(df2, aes(x, y)) +geom_line()
fig2<-ggplotly(p2)

subplot(fig1, fig2, nrows=2)

有关更多信息和示例,请参阅https://plotly.com/r/subplots/。

【讨论】:

我认为 fig 之一需要保留为 ggplot 以匹配问题,但解决方案仍然是完美的 如果有人真的特别想为此使用拼凑(因为语法实现非常好),这可能吗? @Pascoe 我对您的同一个问题感兴趣。这不是我们想要的,但至少我们确定:***.com/a/63038534/13402588 @dss 好吧,正如你所说,至少我们知道。坦率地说,拼凑而成的语法实现非常简洁,无论如何我都很高兴。其他任何东西都是奖励...... 知道如何将 2 个地块并排放置(而不是堆叠)? (我直观地使用了ncols,但这不是subplot() 的有效参数)。编辑:这真的很简单,只需完全省略nrows 参数,它就会自动并排。

以上是关于将 ggplotly 和 ggplot 与拼凑在一起?的主要内容,如果未能解决你的问题,请参考以下文章

图例标签组合图(ggplot 和拼凑)

在 R 中使用 ggplot 和拼凑更改轴标签和比例

在一张图表ggplot R上结合散点图、箱线图和线性回归线

ggplot2中实现多个绘图在一张画布中组合

R语言可视化包ggplot2在一张图中画出两条线实战

ggplot2每组仅包含一个观察值-在一张图上绘制两条线[重复]