web-dev-qa-db-ja.com

離散データのヒストグラムをプロットする

次のデータに対してRを使用してヒストグラムをプロットするのに苦労しています。

ip_addr_player_id,event_name,level,time_to_finish,

118.93.180.241, Puzzle Complete, Puzzle 1,33.28 seconds

これは単一行のデータです。プレイヤー数とプレイされたレベル数のヒストグラムをポットする必要があります。散布図、点、線などを正常にプロットできましたが、ヒストグラムはありませんでした。何か提案してください。

on Xaxis: number of levels. 
Yaxis: Number of player. 

enter image description here

各IPアドレスは一意であり、1つのIPアドレスで複数のレベルを再生できます。サンプル写真を添付し​​ました。

5
Shweta Sisodiya

あなたが探しているのは、実際にはヒストグラムではなく棒グラフだと思います。 geom_barはそのために使用されることを意図しています。例えば:

library(ggplot2)
ggplot(diamonds, aes(cut)) + geom_bar()

enter image description here

5

table()は次の仕事をする必要があります:

データの作成:

ips <- sample(seq(100,999), 100, replace = TRUE) 
levels <- sample(LETTERS, 100, replace = TRUE)
data <- data.frame(ips, levels)

今数えている:

unique.levels <- sort(unique(data$levels))
count <- table(data$levels)
count.df <- data.frame(unique.levels, count)

今プロット:

plot <- ggplot(count.df, aes(unique.levels, Freq, fill=unique.levels))

plot + geom_bar(stat="identity") + 
        labs(title="Level Count",
             subtitle="count for every lvl played",
                     y="Count", x="Levels") + 
        theme(legend.position="none")

plot

Aes()でdata $ Levelsを使用すると、geom_bar()だけでレベルがカウントされることはわかっていますが、count.dfにはその情報が含まれているため、他の場所で使用できます。

1
erickfis

お役に立てれば

library(ggplot2)
df <- data.frame(ip_addr_player_id='118.93.180.241', 
                 event_name='Puzzle Complete', 
                 level='Puzzle 1',
                 time_to_finish='33.28 seconds')
df$num_levels <- strsplit(var,split =' ')[[1]][-1]
ggplot(df) +geom_bar(aes(num_levels)) +labs(x="Num Levels",y="Num Players") 
0
Prem