我有一个非常大的数据集,我想说明在R中使用plotly。 我的数据集示例如下所示:
> new_data_2
# Groups: newdatum [8]
date activity totaal
<date> <fct> <int>
1 2019-11-21 N11 144
2 2019-09-22 N11 129
3 2019-05-15 N22 117
4 2019-01-23 N22 12
5 2019-07-04 N22 12
6 2019-07-18 N22 12
...
对于每个活动,我想在时间序列图中显示每个日期(日期)的金额(总计)。 不知何故,我在R中无法正确显示。我需要对活动进行分组以进行显示,但我无法弄清楚。
new_data_2 %>%
group_by(activity) %>%
plot_ly(x=new_data_2$newdatum) %>%
add_lines(y=~new_data_2$totaal, color = ~factor(newdatum))
它确实显示了一个空图,但左侧没有“活动”。
我想要实现的是:
答案 0 :(得分:1)
您走在正确的轨道上,但是在group_by()
之后,您需要告诉R对小组做些事情。
new_data_2 %>%
group_by(activity, date) %>% # use two groupings since you want by activity & date
summarise(totaal_2 = sum(totaal))
那应该到达您要查找的数据框。您可以从那里使用ggplot&plotly。
我建议先重塑数据(如上所述),将其保存为新对象,然后再对其进行图形处理。这样做可以帮助您了解整个过程中的每个步骤。管道%>%
很不错,但是会使每个步骤都难以看清。
答案 1 :(得分:0)
起初这可能不是很明显,但是您的数据结构非常适合具有多个时间序列的绘图。您甚至不必担心group_by
函数。您的数据集似乎有一个long format,其中date column
中的日期和activity column
中的名称不是唯一的。但是每个活动和日期只有一个变量。
给出正确的规范,plot_ly()
将使用color=~activity
对数据进行分组,如下所示:p <- plot_ly(new_data2, x = ~date, y = ~totall, color = ~activity) %>% add_lines()
。由于您尚未提供足够大的数据样本,因此我将使用内置数据集economics_long
向您展示如何执行此操作。首先,请注意我的采样数据集的结构与您的匹配:
date variable value
1 1967-07-01 psavert 12.5
2 1967-08-01 psavert 12.5
3 1967-09-01 psavert 11.7
4 1967-10-01 psavert 12.5
5 1967-11-01 psavert 12.5
6 1967-12-01 psavert 12.1
...
情节:
代码:
library(plotly)
library(dplyr)
# data
data("economics_long")
df <- data.frame(economics_long)
# keep only some variables that have values on a comparable level
df <- df %>% filter(!(variable %in% c('pop', 'pce', 'unemploy')))
# plotly time series
p <- plot_ly(df, x = ~date, y = ~value, color = ~variable) %>%
add_lines()
# show plot
p