这是一些虚拟数据:
maxlen = 0
# group
for grouper, group in groupby('1111101101101111111111111'):
# filter
if grouper == '1':
# map
thislen = len(list(group))
# check max
if thislen > maxlen:
maxlen = thislen
print(maxlen)
这只是一个df,只有30个观察值和一个日期变量。
> print(ggdf)
Sessions
2017-01-01 80510
2017-01-02 82500
2017-01-03 80496
2017-01-04 81913
2017-01-05 79714
2017-01-06 80236
2017-01-07 82163
2017-01-08 81525
2017-01-09 79738
2017-01-10 81411
2017-01-11 84069
2017-01-12 80991
2017-01-13 81350
2017-01-14 81016
2017-01-15 79220
2017-01-16 81638
2017-01-17 80597
2017-01-18 83716
2017-01-19 80657
2017-01-20 81872
2017-01-21 81496
2017-01-22 79307
2017-01-23 79062
2017-01-24 80101
2017-01-25 82178
2017-01-26 77641
2017-01-27 81067
2017-01-28 85379
2017-01-29 81833
2017-01-30 80927
我想在条形图中将指标趋向30天。
我可以在base r中工作,但不能在ggplot中工作:
> str(ggdf)
'data.frame': 30 obs. of 1 variable:
$ Sessions: num 80510 82500 80496 81913 79714 ...
我期待/希望在日期范围内看到30个柱,第一个柱为80,510,一直到80,927。
我在这里错过了什么?
答案 0 :(得分:2)
根据str(ggdf)
,没有“日期”列,它只是rownames。我们可以创建“日期”列,然后执行ggplot
library(tidyverse)
library(scales)
rownames_to_column(ggdf, "Date") %>%
mutate(Date = as.Date(Date)) %>%
ggplot(., aes(x= Date, y = Sessions)) +
geom_bar(stat = "identity") +
scale_x_date(labels = date_format("%Y-%m-%d"))
从评论中,OP创建了一个“日期”列,但仍然在OP的帖子中得到了输出。它可以追溯到aes
中引用的字符串。对于字符串,请使用aes_string
ggplot(data = ggdf, aes_string(x="Date", y = "Sessions")) +
geom_bar(stat = "identity")
否则,只使用没有任何引号
ggplot(data = ggdf, aes(x=Date, y = Sessions)) +
geom_bar(stat = "identity")