47

私はRにかなり慣れていないので、ggplot2を使用して2つの時系列線を同時に(もちろん異なる色を使用して)プロットしようとしています。

私は2つのデータフレームを持っています。最初のものには、「X の変化率」列と「日付」列があります。2 番目の列には、「Y の変化率」列と「日付」列も含まれています。つまり、両方の「日付」列には同じ値が含まれていますが、「変化率」列には異なる値が含まれています。

単一のプロットで ggplot2 を使用して、「日付」(両方に共通) に対して「変化率」列をプロットしたいと思います。

私がオンラインで見つけた例では、これを達成するために異なる変数を持つ同じデータ フレームを使用していましたが、プロットに到達するために 2 つのデータ フレームを使用するものを見つけることができませんでした。2 つのデータ フレームを一緒にバインドしたくありません。それらを別々に保持したいのです。私が使用しているコードは次のとおりです。

ggplot(jobsAFAM, aes(x=jobsAFAM$data_date, y=jobsAFAM$Percent.Change)) + geom_line() +
  xlab("") + ylab("")

しかし、このコードでは 1 行しか生成されず、その上に別の行を追加したいと考えています。どんな助けでも大歓迎です。ティア。

4

6 に答える 6

107

ggplot複数のレイヤーを持つことができます。これは、ここで利用する必要があるものです。

geom_line以下で作成されたプロットでは、2 つのステートメントが各データセットにヒットし、それらを 1 つのプロットに一緒にプロットしていることがわかります。他のデータセット、プロット、または軸ラベルなどのチャートの機能を追加する場合は、そのロジックを拡張できます。

library(ggplot2)

jobsAFAM1 <- data.frame(
  data_date = runif(5,1,100),
  Percent.Change = runif(5,1,100)
)

jobsAFAM2 <- data.frame(
  data_date = runif(5,1,100),
  Percent.Change = runif(5,1,100)
)

ggplot() + 
  geom_line(data = jobsAFAM1, aes(x = data_date, y = Percent.Change), color = "red") +
  geom_line(data = jobsAFAM2, aes(x = data_date, y = Percent.Change), color = "blue") +
  xlab('data_date') +
  ylab('percent.change')
于 2013-11-12T06:04:19.620 に答える
5

ggfortifyライブラリを使用することをお勧めします。ggplot2autoplot 関数内のオブジェクトのタイプを認識し、プロットするのに最適な ggplot メソッドを選択するラッパーです。少なくとも、ggplot2 の構文を覚える必要はありません。

library(ggfortify)
ts1 <- 1:100
ts2 <- 1:100*0.8
autoplot(ts( cbind(ts1, ts2)  , start = c(2010,5), frequency = 12 ),
         facets = FALSE)

プロット

于 2016-10-03T14:47:16.783 に答える
3

これは古いものです。上記に記載されていない新しい tidyverse ワークフローを更新するだけです。

library(tidyverse)

jobsAFAM1 <- tibble(
    date = seq.Date(from = as.Date('2017-01-01'),by = 'day', length.out = 5),
    Percent.Change = runif(5, 0,1)
    ) %>% 
    mutate(serial='jobsAFAM1')
jobsAFAM2 <- tibble(
    date = seq.Date(from = as.Date('2017-01-01'),by = 'day', length.out = 5),
    Percent.Change = runif(5, 0,1)
    ) %>% 
    mutate(serial='jobsAFAM2')
jobsAFAM <- bind_rows(jobsAFAM1, jobsAFAM2)

ggplot(jobsAFAM, aes(x=date, y=Percent.Change, col=serial)) + geom_line()

@クリス・ジュグナ

tidyr::gather() は、幅の広いデータフレームを長い整頓されたレイアウトに変換する tidyverse ワークフローの 1 つであり、ggplot は複数のシリアルをプロットできます。

集める

于 2020-01-03T01:24:47.667 に答える