2017-10-22 11 views
1

Rの学習を始めたばかりで、グラフ作成に関する問題が発生しました。ggplot2を使ったBarchart /折れ線グラフ

私はSTR(DF)は

Date : chr 
Hour : int 
Street 1: int 
Street 2: int 
.. 
Street 15: int 

日が月の毎日であり、時間は通り一日とデータのすべての時間がために、トラフィックの量を示しているを与えるDFを持っています一日の時間帯の通り。

ggplotに棒グラフを作成し、毎月の各道路の交通量の合計を表示して、最もトラフィックが多い道路を表示したいが、ggplotを使用してグラフを作成しようとすると、それはグラフを破壊する。

スタックオーバーフローで既に質問されているさまざまな質問を見て、データを溶かしてみましたが、間違っていたか、まだ機能しなかったのでデータには適していません。
は私が行うことによって非常に単純解に到達することができました:

df2 <- colSums(df[3:15], na.rm = TRUE) 
barplot(df2, las=2, xlab="Street", ylab="Amount of People", main="Pedestrian Traffic For January", cex.lab=0.75, ylim=c(0,1500000)) 

しかし、このグラフは非常に基本的であると私はx軸のラベルを変更することはできません。

道路の時間当たりの交通量の合計を示す折れ線グラフを作成したいと思いますが、複数の時間データ値があるため(1時間の1/1のデータ、2時間の1時間のデータなど) 1など)、折れ線グラフには1行が表示されません。

編集:
ヘッド(DF)は:より多くの街がありますが、フォーマットのために、私は最初の3通りのデータを掲載しました。

Date  Hour  Street 1    Street 2   Street 3 
1 01/01/2014 0   1544     893     404 
2 01/01/2014 1   1401     224     179 
3 01/01/2014 2   608     127     97 
4 01/01/2014 3   360     108     74 
5 01/01/2014 4   156     75     33 
6 01/01/2014 5   69     20      8 
+1

を投稿してください 'ヘッド(DF)' – PoGibas

+0

Editted頭の中で(DF) – TLo

答えて

0

実際のデータを使用していないため、ランダムデータセットが生成されました。

require(tidyverse) 

# Random Data 
df <- data.frame(date = seq(31), hour = rep(seq(24), 31), Street1 = 
             rpois(24*31, 5), 
             Street2 = rpois(24*31, 10), 
             Street3 = rpois(24*31, 15)) 

# Transform to long format 
df %>% 
    gather(key, value,-date, -hour) -> df 

# Create bar chart 
g <- ggplot(df, aes(x = as.factor(key), y = value)) 
g <- g + geom_bar(stat="identity") 
g <- g + xlab("Street") + ylab("Pedestrian Traffic for January") 
g 

このコードが出力次プロットします: enter image description here

を簡単にコラム「キー」の要因のラベルを変更することにより、X-ラベルを変更することができます。

# Summarize the hourly data 
df %>% 
    group_by(date,key) %>% 
    summarise(value = sum(value)) -> df 

g <- ggplot(df, aes(x = date, y = value, color = key)) 
g <- g + geom_line() 
g 

この意志の出力以下のチャート: enter image description here

+0

折れ線グラフには、次のコードで作成することができます助けてくれてありがとう。私はあなたのコードに従うことができますが、私のdfの日付が整数ではなく文字形式になっているので、あなたの例のような長い形式に変換することはできません。 as.integerを使って整数形式に変換しようとしましたが、これはあなたの例と同じですが、変換後に私にNAが与えられます。問題は、データが「01/01/2014」のようなものだと思います。 – TLo

+0

簡単な日付変換のためにlubridateパッケージを使用できます。日付変数を正しい書式に変換すると、正常に動作するはずです。 (rubridate) df%>% mutate(date = ymd(date) - > df – Niko

+0

) – TLo

関連する問題