R:Plotly 和 subplot():基于因子创建子图的最快方法 [英] R: Plotly and subplot(): fastest way to create a subplot based on a factor

查看:30
本文介绍了R:Plotly 和 subplot():基于因子创建子图的最快方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 dataframe 例如:

 line station   var
1       a 39446
1       b 82964
1       c 57840
1       d 78946
1       e 69972
1       f 14303
1       g 78179
2       a 37738
2       b 62261
2       c 19378
2       d 76435
2       e 17181
2       f 75148
2       g 10882

我想使用 plot_ly 从这些数据中创建一个子图.我想要一个带有 station 作为 x 值和 var 作为 y 值的条形图.我想有两个基于线的子图.我知道我可以这样做:

I would like to use plot_ly to create a subplot from these data. I want a barplot with station as x-values, and var as y-values. I want to have two subplots based on line. I know that I could just do:

p1 <- plot_ly(data = df[df$line == "1", ], x = ~station, y = ~var, type = "bar")
p2 <- plot_ly(data = df[df$line == "2", ], x = ~station, y = ~var, type = "bar")
p3 <- subplot(p1, p2, nrows = 2)

这是一种重复,因为 p1p2 的代码基本相同.本地执行此操作的最快方法是什么?我知道 facet_gridggplotly 但想在情节上原生地使用它.

This is kind of repetitive because the code for p1and p2 is basically the same. What is the fastest way to do this natively? I am aware of facet_gridand ggplotlybut would like to it natively in plotly.

谢谢你:)

推荐答案

您可以拆分 df,并构建每个情节.幸运的是 subplot 支持列表,所以你可以把它全部管道:

You can split the df, and build each plot. Luckily subplot supports list and so you can pipe it all:

library(plotly)
library(purrr)

df %>% 
    split(df$line) %>% 
    map(~{
        plot_ly(data = .x, x = ~station, y = ~var, type = "bar")
    }) %>% 
    subplot(margin = .05)

仅使用基础 R:

splitted_list <- split(df, df$line)

plot_list <- lapply(splitted_list, plot_ly, x = ~station, y = ~var, type = "bar")

subplot(plot_list, margin = .05)

这篇关于R:Plotly 和 subplot():基于因子创建子图的最快方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆