2017-08-21 15 views
2

1つのプロットに2つの温度曲線を作成したいとします。 私のデータフレームは、次のようになります。の温度曲線R

temp <- read.table(text = "  Time  Temp1  Temp2 
          1 00:00  18.62800 18.54458 
          2 00:10  18.60025 18.48283 
          3 00:20  18.57250 18.36767 
          4 00:30  18.54667 18.36950 
          5 00:40  18.51483 18.36550 
          6 00:50  18.48325 18.34783 
          7 01:00  18.45733 18.22625 
          8 01:10  18.43767 18.19067 
          9 01:20  18.41583 18.22042 
          10 01:30  18.39608 18.21225 
          11 01:40  18.37625 18.18658 
          12 01:50  18.35633 18.05942 
          13 02:00  18.33258 18.04142", header = T) 

どのように私は、x軸上の各時間(24時間)を示すことにより、きれいな曲線(折れ線グラフのような行には何の縁)を取得することはできませんか? ggplot2で何かを考えていますが、私はまだRの基礎を学んでいます。

+0

DFがあなたのデータフレームでどこに、(頭(DF))をdputことはできますか? – csgroen

+2

「クリーンカーブ」とは、正確にはどういう意味ですか?プロットする前にデータを要約しますか? – MrFlick

+1

「きれいな曲線」を求めていますが、質問は不明です... –

答えて

2

すべての値はx軸のラベルとして完全な時間しか持たないggplotパッケージを使用してデータをプロットし、scale_x_discrete()オプションを使用してbreaksを指定することができます。

library(ggplot2) 

is_full_time <- grepl(':00', temp$Time) 
ggplot(temp, aes(x = Time, y = Temp1, group = 1)) + geom_line() + scale_x_discrete(breaks = temp$Time[is_full_time]) 

enter image description here

http://ggplot2.tidyverse.org/reference/scale_discrete.html

+0

これは、すべてのデータをそこに置くので、ggplotオブジェクトが不必要に大きくなることはありませんか? – loki

+0

こんにちは@ロキ、それは必要なのは、フル時間の間のデータがプロットするのに必要であり、プロットの視聴者のためのより多くの情報を追加すると思うかどうかにかかっています。 実際にオブジェクトを格納している場合、この特定の例の違いは1000バイト未満です。 – elevendollar

0

これにはtidyverseを使用できます。まず、00分の時間値を取ってから、すべての不要な行のデータを「クリーン」にしてから、ggplotを使用して温度を視覚化します。

library(tidyverse) 

cleanTemp <- temp %>% filter(grepl(pattern = ":00", Time)) 

ggplot(cleanTemp, aes(x = Time, y = Temp1, group = 1)) + 
    geom_line() 

Temp2はあなたにも時間]列をサブセット化lubridateを使用することができます

geom_line(aes(y = Temp2), color = "red") 

をプロットに追加することができます:あなたはプロットしたい場合は

temp$Time <- hm(temp$Time) 
cleanTemp <- temp[minute(temp$Time) == 0,] 
関連する問題